개발 공부

Docker 포트 맵핑 본문

Docker

Docker 포트 맵핑

아이셩짱셩 2024. 12. 11. 10:45

Docker 실행과 컨테이너 및 포트의 관계

Docker 실행 절차

  1. Docker 설치: Windows에서는 Docker Desktop을 설치.
  2. Docker CLI 실행:
    • Windows에서는 Docker Desktop 설치 시 docker.exe가 PATH에 추가됨.
    • cmd, PowerShell, 또는 WSL2 환경에서 docker 명령어 실행 가능.

컨테이너의 구조

  • 컨테이너는 폴더 형식이 아님: Docker는 컨테이너를 독립적인 실행 환경으로 관리하며, 파일 시스템은 호스트 OS의 특정 디렉터리에 매핑할 수 있습니다 (예: -v 옵션으로 볼륨 연결).
  • 컨테이너 실행:
    • docker run 명령어로 실행하면 Docker 데몬이 컨테이너를 시작.
    • 3000:3000은 호스트 포트:컨테이너 포트를 매핑하는 설정.

컨테이너와 포트

  • 컨테이너 포트: 컨테이너 내부에서 서비스가 실행되는 포트.
  • 호스트 포트: 컨테이너 외부에서 접근 가능한 포트.
    • 예: -p 3000:3000은 호스트의 3000번 포트를 컨테이너의 3000번 포트에 연결.

IP와 포트의 관계

  • 기본적으로 Docker는 호스트 OS의 네트워크 인터페이스를 공유합니다.
    • 새 컨테이너를 실행해도 호스트의 IP를 사용하며 포트만 다르게 지정.
  • 도커 네트워크를 활용하면 컨테이너마다 고유한 IP를 부여할 수 있음.
    • 예: docker network create my-network
    • 새 컨테이너를 특정 네트워크에 연결:
docker run --network my-network -p 8080:80 my-container

 

Docker 컨테이너와 포트 요약

  1. 여러 컨테이너를 동일 호스트에서 실행하려면 서로 다른 포트를 매핑.
  2. 독립 IP를 원하는 경우 Docker 네트워크를 사용.
  3. 기본 네트워크 모드에서는 모든 컨테이너가 호스트 OS와 동일한 IP를 공유.

예시: 리눅스 서버에서 Docker 컨테이너 실행 및 네트워크

  1. Docker 네트워크 생성:
docker network create app-network
  1. 컨테이너 실행:
docker run --network app-network --name app1 -p 3001:3000 node:18-alpine
docker run --network app-network --name app2 -p 3002:3000 node:18-alpine
  1. 결과:
    • app1: 호스트 IP의 포트 3001
    • app2: 호스트 IP의 포트 3002
    • 동일 네트워크에 연결된 컨테이너끼리는 IP를 통해 통신 가능.

로컬에서 실행 중인 Next.js와 충돌

컨테이너가 로컬 호스트의 동일한 포트(예: 3000)를 사용하는 경우 충돌이 발생할 수 있습니다. 이때는 다른 포트를 매핑합니다:

docker run -p 3001:3000 my-nextjs-app
 

Docker는 네트워크와 포트 매핑을 잘 활용하면 확장성이 뛰어난 시스템을 구축할 수 있습니다! 😊

'Docker' 카테고리의 다른 글

Docker Compose, Localhost,DB  (0) 2024.12.11
Docker Linux 컨테이너 비추천 이유  (0) 2024.12.11
Docker Node.js vs. Nginx  (0) 2024.12.11
Comments