inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 Docker 입문/실전

컨테이너(Container) 생성 / 실행 - 2

포트 중복 할당

85

임재원

작성한 질문수 2

0

$ docker run -d -p 80:80 nginx

를 실행시켰을 때, localhost:80에서 nginx html이 실행되는 것을 볼 수 있었습니다.

하나의 포트에 호스트와 컨테이너 2개의 서비스가 할당되어 있는 것인지 궁금합니다.

docker container

답변 2

0

JSCODE 박재성

안녕하세요 재원님! 질문 잘 해주셨습니다~~

 

image.png

먼저 호스트와 컨테이너는 기본적으로 독립적인 컴퓨터 환경입니다.

Docker를 활용해서 nginx를 실행시키는 순간 컨테이너의 80번 포트에 실행을 시킨 것입니다.

 

image.png

 

그런데 -p 80:80 옵션으로 포트 매핑을 시킴으로써

'호스트의 80번 포트로 들어오는 요청을 컨테이너의 80번 포트로 리다이렉트시킨다'라고

생각하시는 게 조금 더 정확합니다.

즉, 엄밀히 따지면 하나의 포트에 호스트와 컨테이너 2개의 서비스가 할당되어 있는 것이 아니라

컨테이너에만 하나의 서비스가 할당되어 있는 상태입니다.

 

여기서 이해 안 되시는 점 있으시면 또 댓글 남겨주세요~~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 임재원님.

Docker에서 포트 매핑을 사용하는 경우는 호스트 시스템의 포트와 도커 컨테이너 내의 포트를 연결한다는 의미입니다. $ docker run -d -p 80:80 nginx 명령어를 실행하면 다음과 같은 일이 발생합니다:

  1. 호스트의 포트 80: 호스트 시스템의 80번 포트를 사용하게 됩니다. 보통 웹 서버가 사용하는 기본 포트로, 이 포트를 통해 외부에서 접근할 수 있게 됩니다.

  2. 컨테이너의 포트 80: 컨테이너 내부의 nginx 서버가 80번 포트에서 실행됩니다. 이 포트를 통해 컨테이너 내부에서 서비스에 접근할 수 있습니다.

  3. 포트 매핑: -p 80:80 매핑을 통해 호스트 포트와 컨테이너 포트를 연결함으로써, 외부 사용자가 localhost:80에 접근할 때 호스트의 80번 포트가 컨테이너의 80번 포트로 연결되어 nginx 서버가 제공하는 서비스를 이용하게 됩니다.

요약하자면, 하나의 포트에 호스트와 컨테이너 둘 다 서비스가 할당된 것이 아니라, 호스트의 특정 포트가 컨테이너의 서비스와 연결되는 것입니다. 따라서 하나의 포트에 두 개의 서비스가 할당되었다고 보기보다는 하나의 포트를 통해 연결되어 있는 것입니다.

아래는 유사한 내용을 다룬 질문 링크입니다. 추가 설명 및 개선된 이해를 위해 참고하실 수 있습니다:
- 컨테이너 포트 설정 질문

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

EC2 터미널에서 docker pull

0

62

2

AWS ECR

0

57

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

98

2

Redis 볼륨 설정?

0

114

2

컨테이너의 IP

0

79

2

도커 이미지를 만들 때 application.yml

0

100

2

compose.yml 관리

0

86

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

76

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

82

1

depends_on에 따른 컨테이너 실행 순서

0

75

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

66

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

71

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

71

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

67

2

도커파일 copy

0

69

2

실무에서 docker compose up --build를 할 때

0

183

2

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

0

83

2

도커 허브에서 postgres 버전 확인하는 법

0

127

2

보충 자료와도 관련된 추가 내용

1

81

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

108

2

노션 자료에 안 보이는 이미지가 있습니다

0

99

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

117

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

86

2