• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

expose -p 차이점

21.07.18 02:31 작성 조회수 151

0

안녕하세요 선생님!

도커를 공부하던 중 expose를 보게되었는데

EXPOSE와 -P의 차이점에 대한 명확한 답을 못 얻겠어서 질문을 남깁니다.

예를 들어 아래의 코드와 같은 상황에서 EXPOSE 3000을 어떻게 해석해야 할 지 모르겠습니다./. 

늘 양질의 강의 감사하고 선생님 강의 덕에 도커를 더 알고 싶어 공부에 재미가 붙었네요 :)

FROM node:alpine AS builder

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY ./ ./

CMD ["npm""run" "build"]

FROM nginx

EXPOSE 3000

COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /usr/src/app/build /usr/share/nginx/html

답변 1

답변을 작성해보세요.

0

안녕하세요. 공부에 재미가 붙으셨다니 정말 기쁘네요~~~

Dockerfile 내에 있는 EXPOSE 는 각 도커마다, 외부에서 들어오는 트래픽을 리스닝할 때, 어느 포트에서 어떤 프로토콜의 데이터를 리스닝할지를 설정하는 것입니다. 도커 내부에서 외부 데이터 리스닝 관련 설정을 사용하는 다른 리눅스등의 명령이나 설정에만 관련이 되어 있고요. 이렇게 설정했다고 해서, 외부 호스트 PC에서 해당 도커에 데이터 전송시, 해당 포트를 무조건 쓰도록 매핑이 된 것은 아닙니다.

호스트 PC의 특정 포트와, 도커의 포트를 매팽시키는 명령은 다음과 같이 -p 옵션으로 하게 되고, 이를 통해, 외부 네트워크에서 도커와 커뮤니케이션을 하는 통로를 뚫을 수 있습니다. 보통은 일반적인 케이스에서는 전자의 케이스를 사용하기 보다는, 후자의 케이스만 신경쓰시면 됩니다. -p 옵션을 사용하거나, docker-compose 에서 -p 역할을 하는 명령을 사용하시면 큰 문제 없습니다. 

docker run -it -p 5005:5005 

감사합니다.