KAKAO.GG
백엔드

Docker 네트워킹 및 포트 매핑 가이드

65870717953200389e7820de
2024. 8. 5.
조회 220
#docker 네트워킹, 도커 네트워크 구성, 도커 컨테이너 네트워크 연결, 도커 네트워크 생성, 도커 컨테이너 네트워크 확인

Docker 네트워킹이란?

Docker 네트워킹을 이해하기 위해, 컨테이너를 아파트(호)로 생각하면 됩니다. 각 아파트(컨테이너)는 같은 건물(Docker 호스트) 안에 있지만, 서로 독립적인 공간입니다. 네트워킹은 아파트(호)들이 서로 소통하고, 외부(현관문)와 연결되는 방법을 제공합니다.

 

주요 네트워크 드라이버

  • Bridge: 아파트 내부의 인터폰 시스템 생각하시면 됩니다. (Docker 호스트 내 컨테이너 간 통신에 사용됩니다.)

  • Host: 컨테이너가 호스트의 네트워크 스택을 직접 사용합니다.

  • None: 컨테이너의 모든 외부 연결을 차단합니다. 방음 처리된 아파트라고 생각하면 됩니다.

 

네트워크 관리 명령어

# 네트워크 생성
docker network create [OPTIONS] NETWORK

# 네트워크 목록 조회
docker network ls

# 네트워크 상세 정보 확인
docker network inspect NETWORK

# 네트워크 제거
docker network rm NETWORK

# 사용되지 않는 모든 네트워크 제거
docker network prune

 

포트 매핑

포트 패밍은 외부와 소통하는 것을 생각하면 됩니다. 외부에서 컨테이너 내부의 서비스에 접근할 수 있게 해주는 방법입니다. 쉽게 얘기하면 초인종입니다.

 

기본 포트 매핑

docker run -p 8080:80 nginx

"80번 초인종(컨테이너의 80 포트)을 눌렀을 때, 8080호 (101동 8080호)로 연결해주세요" 를 생각하시면 됩니다.

 

다중 포트 매핑

여러 포트를 동시에 매핑할 수 있습니다.

docker run -p 8080:80 -p 443:443 nginx

 

특정 IP에 대한 포트 매핑

특정 IP 주소에 대해서만 포트를 매핑할 수 있습니다.

docker run -p 127.0.0.1:8080:80 nginx

이는 "80번과 443번 초인종을 각각 8080번과 443번 방으로 연결해주세요"라고 하는 것과 같습니다.

 

컨테이너 간 통신

(중요) 같은 네트워크에 있는 컨테이너들은 서로의 이름을 사용해 통신할 수 있습니다.

docker network create mynetwork
docker run -d --name container1 --network mynetwork nginx
docker run -d --name container2 --network mynetwork ubuntu

container2에서 container1에 접근할 때 container1이라는 호스트명을 사용할 수 있습니다.

 

네트워크 연결 및 분리

# 네트워크에 연결
docker network connect mynetwork mycontainer

# 네트워크에서 분리
docker network disconnect mynetwork mycontainer

 

네트워킹 트러블슈팅

네트워킹 문제가 생겼을 때 가장 먼저 해야 할 것은 네트워크 연결 확인입니다.

 

  • 컨테이너 내부에서 네트워크 연결을 확인

docker exec -it mycontainer ping google.com
  • 네트워크 설정 확인

docker network inspect mynetwork

 

오늘의 한줄 평, 네트워킹은 이해도 어렵고 복잡하지만, 잘 활용해서 컨테이너의 독립적인 공간을, 네트워크를 통해 연결할 수 있다.

Docker 네트워킹 및 포트 매핑 가이드 - Tech Data - KAKAO.GG