• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

docker -p 옵션과 Dockerfile의 EXPOSE 차이가 뭔가요?

21.07.30 00:06 작성 조회수 1.06k

1

두 옵션의 차이점이 잘 이해가 되지 않아 질문드립니다..! 

저는 Dockerfile에 

From    nginx:latest

COPY    index.html /user/share/nginx/html

EXPOSE    8000

위와같이 명시한 후

$ docker build -t web:nginx .

$ docker run -d --rm --name nginxweb web:nginx

위와같이 실행하였습니다. 그런데 웹에서 접속 확인 시 재대로 접속이 되지 않아서 (페이지 자체에 요청이 되지 않았습니다..) docker ps 로 확인해보니

PORTS

80/tcp, 8000/tcp

와같이 적혀있고 매핑된것처럼 표시되지 않았습니다.

이후 정답지를 보니 docker run -p 옵션을 사용한것을 확인했는데 두 방법의 차이점과 각 어느상황에서 사용하는 건지 궁금합니다! 

답변 1

답변을 작성해보세요.

0

안녕하세요!

일단, 포트를 연결하는 방법은 "-p"를 사용하는 것입니다.

EXPOSE는 "이런 포트를 사용한다는 설정"만 알려주고 실제로 포트를 연결하지는 않습니다.

그럼 EXPOSE를 안써도 포트 연결이 가능할까요? 네 가능합니다. EXPOSE는 단순히 정보성 설정이라고 보시면 될 것 같습니다.

EXPOSE를 쓰는 이유는 이 컨테이너가 어떤 포트를 사용하는지 알려주고, 만약 전체 포트를 연결하고 싶다면 "-P(대문자)" 옵션이 존재합니다.

감사합니다!