IT/doker

[도커] Network 생성 방법

generator 2025. 2. 6. 12:57

 

Docker Network는 컨테이너들이 서로 통신할 수 있도록 격리된 네트워크 환경을 제공합니다. 필요에 따라 다양한 유형의 네트워크를 생성하여 컨테이너들을 연결하고 관리할 수 있습니다.

1. Docker Network 종류

Docker는 다양한 네트워크 드라이버를 제공하며, 각 드라이버는 특정 유형의 네트워크를 지원합니다. 주요 네트워크 종류는 다음과 같습니다.

  • bridge: 기본 네트워크 드라이버로, Docker가 자동으로 생성하는 기본 네트워크입니다. 컨테이너들은 이 네트워크를 통해 서로 통신할 수 있으며, 호스트와 통신할 수도 있습니다.
  • host: 호스트의 네트워크 인터페이스를 직접 사용하여 컨테이너와 호스트가 동일한 네트워크 네임스페이스를 공유합니다. 네트워크 격리가 필요 없는 경우에 유용하지만, 보안 문제가 발생할 수 있습니다.
  • overlay: 여러 Docker 데몬을 연결하여 Docker Swarm 서비스와 컨테이너 간에 노드 간 통신을 가능하게 합니다. Swarm 모드에서 작동하며, 여러 호스트에 걸쳐 있는 컨테이너 간에 통신할 수 있도록 합니다.
  • none: 컨테이너에 네트워크 인터페이스를 제공하지 않습니다. 컨테이너가 외부와 통신할 필요가 없는 경우에 사용됩니다.

2. Docker Network 생성 명령어

docker network create 명령어를 사용하여 새로운 Docker 네트워크를 생성할 수 있습니다.

Bash
 
docker network create [옵션] <네트워크 이름>

주요 옵션

  • -d, --driver <드라이버>: 사용할 네트워크 드라이버를 지정합니다. (기본값: bridge)
  • --subnet <서브넷>: 네트워크의 IP 주소 대역을 지정합니다.
  • --gateway <게이트웨이>: 네트워크의 게이트웨이 IP 주소를 지정합니다.
  • -o <옵션>=<값>: 드라이버별 추가 옵션을 지정합니다.

예시

  1. bridge 네트워크 생성:
  2. Bash
     
    docker network create my-bridge-network
    
  3. bridge 네트워크 생성 (서브넷 및 게이트웨이 지정):
  4. Bash
     
    docker network create --subnet=172.18.0.0/16 --gateway=172.18.0.1 my-bridge-network
    
  5. overlay 네트워크 생성:
  6. Bash
     
    docker network create -d overlay my-overlay-network
    

생성된 네트워크 확인

docker network ls 명령어를 사용하여 생성된 네트워크 목록을 확인할 수 있습니다.

Bash
 
docker network ls

컨테이너를 네트워크에 연결

docker run 명령어의 --network 옵션을 사용하여 컨테이너를 특정 네트워크에 연결할 수 있습니다.

Bash
 
docker run --network=<네트워크 이름> <이미지 이름>

docker-compose.yml 파일을 이용한 네트워크 정의

docker-compose.yml 파일에 networks 섹션을 추가하여 네트워크를 정의하고, 서비스를 해당 네트워크에 연결할 수 있습니다.

YAML
 
version: "3.9"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    networks:
      - my-network
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
    networks:
      - my-network
networks:
  my-network:
    driver: bridge