Docker에서 네트워크 서비스 공개

중급 Docker

Mike Metzger

Data Engineering Consultant

네트워크 서비스

  • 네트워크 서비스는 지정된 포트에서 수신합니다
  • 동시에 하나의 IP:포트 조합에는 하나의 프로그램만 수신할 수 있습니다
    • 예: 10.1.2.3:80은 10.1.2.3의 80번 포트를 수신합니다.
  • 포트 80에서 수신하는 웹 서버의 여러 버전을 디버깅한다고 가정해 봅시다
    • 해당 포트만 수신하므로 한 번에 하나의 복사본만 실행할 수 있습니다
중급 Docker

컨테이너화된 서비스

  • 애플리케이션을 컨테이너로 감싸면 각 컨테이너가 해당 포트에서 수신할 수 있습니다(각 컨테이너의 IP가 달라 IP:포트가 다름)
  • 여러 컨테이너를 동시에 실행할 수 있습니다
  • 그러면 호스트에서 컨테이너의 애플리케이션에 어떻게 접속할까요?
중급 Docker

포트 매핑

  • 해답은 포트 매핑(포트 포워딩/변환)입니다
  • 포트 매핑은 특정 IP:포트로의 연결을 다른 IP:포트로 자동 전달합니다
  • 이 경우 호스트의 사용하지 않는 포트를 컨테이너의 80포트에 매핑할 수 있습니다
  • Docker 엔진이 설정만 하면 이를 자동 처리합니다

포트 매핑 예시

중급 Docker

포트 매핑 활성화

  • 특정 컨테이너에 포트 매핑을 활성화하려면 docker run 명령과 -p 플래그를 사용합니다
  • -p <host port>:<container port>
  • -p 5501:80
  • 여러 포트에 대해 -p를 여러 번 지정할 수 있습니다
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
중급 Docker

연습해 봅시다!

중급 Docker

Preparing Video For Download...