본문 바로가기
네트워크 (LAN,WAN)

컨테이너 네트워크 통신 컨트롤 Docker Networking 명령어 종합

by 날으는물고기 2025. 8. 3.

컨테이너 네트워크 통신 컨트롤 Docker Networking 명령어 종합

728x90

Docker 네트워크는 컨테이너 간의 통신을 관리하는 핵심 기능입니다. 주요 명령어는 다음과 같습니다.

주요 명령어 목록

  • docker network create - 네트워크 생성
  • docker network ls - 네트워크 목록 조회
  • docker network inspect - 네트워크 상세 정보 확인
  • docker network connect - 컨테이너를 네트워크에 연결
  • docker network disconnect - 컨테이너를 네트워크에서 분리
  • docker network rm - 네트워크 삭제
  • docker network prune - 사용하지 않는 네트워크 일괄 삭제
300x250

docker network create

새로운 네트워크를 생성합니다.

 

기본 구문

docker network create [OPTIONS] NETWORK

주요 옵션

  • -d, --driver: 네트워크 드라이버 지정 (기본값: bridge)
  • --subnet: 서브넷 CIDR 형식 지정
  • --gateway: 게이트웨이 IP 주소 지정
  • --ip-range: IP 주소 할당 범위 지정
  • --internal: 외부 접근 제한
  • --attachable: Swarm 서비스가 아닌 컨테이너도 연결 가능
  • --ipv6: IPv6 지원 활성화

예시

# 기본 브리지 네트워크 생성
docker network create my-network

# 사용자 정의 서브넷으로 네트워크 생성
docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.1 custom-network

# 오버레이 네트워크 생성 (Swarm 모드)
docker network create -d overlay --attachable my-overlay

docker network ls

모든 네트워크 목록을 표시합니다.

 

기본 구문

docker network ls [OPTIONS]

주요 옵션

  • -f, --filter: 필터링 조건 적용
  • --format: 출력 형식 지정
  • --no-trunc: ID 전체 표시
  • -q, --quiet: ID만 표시

필터링 예시

# 브리지 드라이버만 표시
docker network ls --filter driver=bridge

# 특정 라벨이 있는 네트워크만 표시
docker network ls --filter label=production

# JSON 형식으로 출력
docker network ls --format json

docker network connect

실행 중인 컨테이너를 네트워크에 연결합니다.

 

기본 구문

docker network connect [OPTIONS] NETWORK CONTAINER

주요 옵션

  • --ip: 특정 IP 주소 할당
  • --alias: 네트워크 내 별칭 설정
  • --link: 다른 컨테이너와 연결
  • --driver-opt: 드라이버별 옵션 설정

예시

# 기본 연결
docker network connect my-network container1

# 특정 IP 주소로 연결
docker network connect --ip 172.20.0.10 my-network container2

# 별칭 설정하여 연결
docker network connect --alias db-server my-network database-container

docker network disconnect

컨테이너를 네트워크에서 분리합니다.

 

기본 구문

docker network disconnect [OPTIONS] NETWORK CONTAINER

주요 옵션

  • -f, --force: 강제 분리

예시

# 일반 분리
docker network disconnect my-network container1

# 강제 분리
docker network disconnect -f my-network container1

docker network inspect

네트워크의 상세 정보를 확인합니다.

 

기본 구문

docker network inspect [OPTIONS] NETWORK [NETWORK...]

주요 옵션

  • -f, --format: 출력 형식 지정
  • -v, --verbose: 상세 정보 표시

예시

# 기본 정보 확인
docker network inspect my-network

# 특정 정보만 추출
docker network inspect -f '{{.IPAM.Config}}' my-network

docker network rm

네트워크를 삭제합니다.

 

기본 구문

docker network rm NETWORK [NETWORK...]

주요 옵션

  • -f, --force: 네트워크가 없어도 오류 발생하지 않음

예시

# 단일 네트워크 삭제
docker network rm my-network

# 여러 네트워크 동시 삭제
docker network rm network1 network2 network3

docker network prune

사용하지 않는 모든 네트워크를 삭제합니다.

 

기본 구문

docker network prune [OPTIONS]

주요 옵션

  • --filter: 필터 조건 적용
  • -f, --force: 확인 없이 삭제

예시

# 사용하지 않는 네트워크 모두 삭제
docker network prune

# 5분 이상 된 네트워크 삭제
docker network prune --filter until=5m

네트워크 드라이버 유형

Bridge (기본값)

  • 단일 호스트에서 컨테이너 간 통신
  • 가장 일반적으로 사용되는 드라이버

Host

  • 호스트의 네트워크 스택 직접 사용
  • 네트워크 격리 없음

Overlay

  • 여러 Docker 호스트 간 통신
  • Swarm 모드에서 주로 사용

None

  • 네트워크 비활성화
  • 완전한 네트워크 격리

Macvlan

  • 컨테이너에 MAC 주소 할당
  • 물리적 네트워크 장치처럼 동작

주요 장애/이슈 대응 방법 (FAQ)

Q1: "network not found" 오류 발생

원인: 지정한 네트워크가 존재하지 않음
해결방법

# 네트워크 목록 확인
docker network ls

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

Q2: 컨테이너 간 통신이 안 됨

원인: 다른 네트워크에 속해 있거나 네트워크 설정 문제
해결방법

# 컨테이너가 속한 네트워크 확인
docker inspect [컨테이너명] | grep NetworkMode

# 같은 네트워크에 연결
docker network connect [네트워크명] [컨테이너명]

# 방화벽 규칙 확인 (--internal 옵션 사용 여부)
docker network inspect [네트워크명]

Q3: IP 주소 충돌 발생

원인: 기존 네트워크와 서브넷이 겹침
해결방법

# 사용 중인 서브넷 확인
docker network ls
docker network inspect [네트워크명] | grep Subnet

# 다른 서브넷으로 네트워크 생성
docker network create --subnet=172.30.0.0/16 new-network

Q4: 네트워크 삭제 시 "has active endpoints" 오류

원인: 네트워크에 연결된 컨테이너가 있음
해결방법

# 네트워크에 연결된 컨테이너 확인
docker network inspect [네트워크명]

# 컨테이너 분리
docker network disconnect [네트워크명] [컨테이너명]

# 또는 컨테이너 정지 후 삭제
docker stop [컨테이너명]
docker rm [컨테이너명]

# 네트워크 삭제
docker network rm [네트워크명]

Q5: 외부에서 컨테이너 접속 불가

원인: 포트 매핑이 되어있지 않거나 방화벽 설정
해결방법

# 포트 매핑 확인
docker ps

# 포트 매핑하여 컨테이너 실행
docker run -p [호스트포트]:[컨테이너포트] [이미지명]

# 방화벽 규칙 확인 (Linux)
sudo iptables -L

Q6: DNS 해석 문제

원인: 컨테이너 내부 DNS 설정 문제
해결방법

# 사용자 정의 DNS 서버 지정
docker run --dns 8.8.8.8 [이미지명]

# 네트워크 별칭 사용
docker network connect --alias [별칭] [네트워크명] [컨테이너명]

Q7: 네트워크 성능 문제

원인: MTU 설정, 드라이버 선택 등
해결방법

# MTU 설정
docker network create -o "com.docker.network.driver.mtu"="1450" [네트워크명]

# 호스트 네트워크 사용 (성능 우선)
docker run --network host [이미지명]

Q8: Swarm 오버레이 네트워크 문제

원인: Swarm 노드 간 통신 문제
해결방법

# 필요한 포트 확인 (2377, 7946, 4789)
# 방화벽에서 해당 포트 열기

# attachable 옵션으로 재생성
docker network create -d overlay --attachable [네트워크명]

베스트 프랙티스

  1. 네트워크 이름 규칙: 용도별로 명확한 이름 사용 (예: frontend-network, backend-network)
  2. 서브넷 계획: 충돌을 피하기 위해 서브넷 대역 미리 계획
  3. 보안 고려사항
    • 필요한 경우만 포트 노출
    • internal 네트워크 활용
    • 민감한 서비스는 별도 네트워크 격리
  4. 정기적인 정리: docker network prune 명령으로 사용하지 않는 네트워크 정리
  5. 모니터링: 네트워크 상태와 성능을 주기적으로 확인

이러한 가이드라인을 따르면 Docker 네트워크를 효과적으로 관리하고 일반적인 문제들을 쉽게 해결할 수 있습니다.

728x90
그리드형(광고전용)

댓글