CodeGym /행동 /Docker SELF /컨테이너 포트 공개

컨테이너 포트 공개

Docker SELF
레벨 17 , 레슨 3
사용 가능

4.1 포트 공개의 주요 개념

포트 공개는 Docker 컨테이너에서 실행 중인 서비스가 외부 네트워크나 호스트에서 접근 가능하도록 설정하는 것이야. 이건 멀티컨테이너 애플리케이션 설정의 중요한 부분이야, 왜냐면 웹 서버, 데이터베이스, 기타 네트워크 애플리케이션 같은 서비스와 상호작용하게 하니까. 이번 강의에서는 컨테이너 포트를 공개하고 서비스에 접근 권한을 설정하는 방법을 다룰 거야.

포트 공개의 주요 개념

  • 포트 매핑: 호스트 포트를 컨테이너 포트에 매핑시키는 일.
  • 파라미터 -p/--publish: 컨테이너 실행 시 포트 매핑을 지정하는 데 사용돼.
  • 파라미터 -P/--publish-all: 컨테이너 내의 모든 공개된 포트에 대해 호스트 포트를 자동으로 할당해.

파라미터 -p의 사용 예

컨테이너 실행 시 호스트 포트를 컨테이너 포트로 매핑하려면 -p 옵션을 사용할 수 있어. 명령어 형식은 다음과 같아:

Terminal

docker run -d -p <host_port>:<container_port> <image> 

예제 1: Nginx 웹 서버 포트 공개

Nginx가 실행 중인 컨테이너를 시작하고 컨테이너의 포트 80을 호스트의 포트 8080으로 공개해 보자.

이제 Nginx는 http://localhost:8080 주소에서 접근 가능할 거야.

Terminal

docker run -d -p 8080:80 --name mynginx nginx 

예제 2: 여러 포트 공개

-p 옵션을 여러 번 사용하여 여러 포트를 공개할 수 있어.

이 예제에서는 Nginx가 HTTP에서는 포트 8080, HTTPS에서는 포트 8443에서 접근 가능할 거야.

Terminal

docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx 

파라미터 -P의 사용 예

-P 파라미터는 Dockerfile이나 컨테이너 설정에 명시된 모든 포트를 임의의 호스트 포트로 자동 공개해.

예제:

Terminal

docker run -d -P --name mynginx nginx 

어떤 포트가 할당되었는지 확인하려면 docker port 명령어를 사용해:

Terminal

docker port mynginx

출력은 대략 이렇게 나올 거야:

Terminal

80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769

4.2 Docker Compose에서 포트 퍼블리싱

Docker Compose에서 포트를 지정하려면 docker-compose.yml 파일의 ports 디렉티브를 사용하면 돼.

docker-compose.yml 파일 예제

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
      - "8443:443"

Docker Compose 실행:

Terminal

docker compose up -d 

이제 Nginx는 http://localhost:8080https://localhost:8443 주소에서 접속 가능해.

4.3 포트 공개 추가 매개변수

1. IP 주소 제한

호스트의 IP 주소를 지정하여 컨테이너 포트에 대한 접근을 제한할 수 있어.

예:

이 예에서 Nginx는 http://127.0.0.1:8080 주소의 로컬 호스트에서만 접근 가능할 거야.

Terminal

docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx 

2. 포트 범위 사용

포트를 공개할 때 범위를 지정할 수 있어.

예:

Terminal

docker run -d -p 8080-8081:80-81 --name mynginx nginx 

실용적인 팁:

  • 필요한 포트만 공개: 서비스에 접근하기 위해 정말 필요한 포트만 공개해서 잠재적인 취약점을 줄여봐.
  • 방화벽 사용: 신뢰할 수 있는 IP 주소에서만 공개된 포트에 접근할 수 있도록 방화벽을 설정해.
  • 모니터링과 로깅: 모니터링 및 로깅 도구를 사용해서 공개된 포트에 대한 접근을 추적하고 수상한 활동을 찾아봐.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION