개발 공부
Docker 포트 맵핑 본문
Docker 실행과 컨테이너 및 포트의 관계
Docker 실행 절차
- Docker 설치: Windows에서는 Docker Desktop을 설치.
- 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 컨테이너와 포트 요약
- 여러 컨테이너를 동일 호스트에서 실행하려면 서로 다른 포트를 매핑.
- 독립 IP를 원하는 경우 Docker 네트워크를 사용.
- 기본 네트워크 모드에서는 모든 컨테이너가 호스트 OS와 동일한 IP를 공유.
예시: 리눅스 서버에서 Docker 컨테이너 실행 및 네트워크
- Docker 네트워크 생성:
docker network create app-network
- 컨테이너 실행:
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
- 결과:
- 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