도커 네트워크 컨테이너 네트워크 통신

Docker 네트워크에는 주로 다음 두 가지 기능이 있습니다.

  • 컨테이너 간 상호 연결 및 통신과 포트 매핑
  • 컨테이너 IP가 변경되어도 영향을 받지 않고 서비스 이름을 통해 직접 네트워크 통신이 가능하다.

컨테이너가 동일한 Docker 네트워크에 있는 한 다시 시작할 필요 없이 서비스 이름을 사용하여 직접 액세스할 수 있습니다.

도커 컨테이너 네트워크 모드

  • 브리지 네트워크 모드: 컨테이너가 서로 통신할 수 있도록 합니다.

브리지 네트워크 모드는 NAT 모드를 기반으로 한 네트워크 통신 방식입니다. 이 드라이버는 Docker의 기본 드라이버로, 이 드라이버를 사용할 때 생성된 Docker 컨테이너를 Docker 브리지에 연결하세요. 가장 일반적인 모드인 브리지 모드는 이미 Docker 컨테이너의 가장 기본적인 사용 요구 사항을 충족할 수 있습니다. 그러나 외부 세계와 통신하기 위해 NAT를 사용하므로 통신의 복잡성이 증가하고 복잡한 시나리오에서 사용할 경우 많은 제한 사항이 있습니다.

  • 호스트 네트워크 모드: 컨테이너 프로그램이 호스트 네트워크를 사용하도록 허용

컨테이너 내의 네트워크는 호스트로부터 영원히 분리될 것으로 예상되지 않습니다. 일부 기본 서비스는 호스트의 네트워크 구성을 생성하거나 업데이트해야 합니다. 호스트 네트워크를 수정하려면 프로그램을 호스트 네트워크 모드에서 실행해야 합니다. 이 경우 Docker의 호스트 호스트 네트워크 모드를 사용해야 합니다. 따라서 호스트 드라이버는 컨테이너 클러스터의 규모가 크지 않은 시나리오에 적합하다고 볼 수 있다.

  • 없음 네트워크 모드 : 작업의 네트워크를 사용할 수 없습니다

none 네트워크 모드는 Docker 컨테이너에 대한 네트워크 환경을 생성하지 않으며 컨테이너 내부에서는 루프백 네트워크 장치만 사용할 수 있으며 다른 네트워크 리소스는 없습니다. None 모드는 Docker 컨테이너에 대해 매우 적은 네트워크 설정을 수행한다고 말할 수 있지만 속담처럼 "적은 것이 더 많습니다." 네트워크 구성이 없는 경우 Docker 개발자는 이를 기반으로 무한한 다른 가능성을 수행할 수 있습니다. 맞춤형 웹 개발. 이는 또한 Docker의 디자인 철학의 개방성을 반영합니다.

  • 컨테이너 네트워크 모드: 두 컨테이너를 통합 네트워크 공간에 배치하고 localhost를 통해 직접 액세스

컨테이너 네트워크 모드를 사용하면 한 컨테이너가 다른 컨테이너의 네트워크 네임스페이스를 공유할 수 있습니다. 컨테이너 네트워크 모드는 두 개의 컨테이너가 네트워크를 공유해야 하지만 다른 리소스는 여전히 격리되어야 할 때 사용할 수 있습니다. 예를 들어 http 서비스를 개발했지만 nginx의 일부 기능을 사용하여 nginx가 외부 요청을 프록시하고 그런 다음 이를 우리 자신에게 전달합니다.비즈니스, 현재 우리는 컨테이너 네트워크 모드를 사용하여 우리가 개발한 서비스와 nginx 서비스를 동일한 네트워크 네임스페이스에 배포합니다. 컨테이너 네트워크 모드는 Docker의 특수 네트워크 모드로, 이 모드의 Docker 컨테이너는 네트워크 스택을 공유하므로 두 컨테이너가 localhost를 사용하여 효율적이고 빠르게 통신할 수 있습니다.

도커 컨테이너 네트워크 명령

  • 네트워크 생성

매개변수 설명:

--driver: 드라이버 유형

--gateway: 기본 서브넷의 IPV4 및 IPV6용 게이트웨이

--subnet: 네트워크 세그먼트를 나타내는 CIDR 형식의 서브넷

mynet: 사용자 정의 네트워크 이름

옵션을 지정하지 않으면 기본 –driver(네트워크 모드)도 브리지(브리지)이지만 게이트웨이와 서브넷이 자동으로 생성됩니다.

docker network create 网络名称
docker network create -d bridge mynetwork
docker network create --driver=bridge --gateway=192.168.137.1 --subnet=192.168.137.0/16 mynet
  • 보기 네트워크 목록 보기
docker network ls
  • 네트워크의 쿼리 모델 세부정보
docker network inspect 网络名称
  •  인터넷 연결
docker network connect 网络名称 容器名称
  •  네트워크에서 연결이 끊어졌습니다.
docker network disconnect 网络名称 容器名称
  • 네트워크 삭제
docker network rm 网络名称
  • 더 이상 사용하지 않는 모든 네트워크 삭제
docker network prune
  • 컨테이너 생성 및 실행 시 네트워크 지정
docker run --name containerName -p 80:80 -d --network my_network nginx

Docker가 설치되면 다음 세 가지 네트워크가 호스트에 자동으로 생성됩니다.

# docker network ls
네트워크 ID     이름               DRIVER    범위
ff11ffdbd211   브리지            브리지    로컬
a80155c5275d   호스트             호스트      로컬< /span>
b67166d3dfba   없음              null      로컬 

사용예

1. 컨테이너 생성 시 네트워크 마운트

#创建一个桥接类型的网络
docker network create --driver=bridge --gateway=192.168.137.1 --subnet=192.168.137.0/16 myNet1

#创建并运行容器时指定网络
docker run --name containerName -p 80:80 -d --network myNet1 myNginx

#不想用时可以断开网络
docker network disconnect myNet1 myNginx

2. 기존 컨테이너를 새 네트워크에 연결

#创建一个桥接类型的网络
docker network create --driver=bridge --gateway=192.168.137.1 --subnet=192.168.137.0/16 myNet2

#为容器连接新的网络
docker network connect myNet2 myNginx

#不想用时可以断开网络
docker network disconnect myNet2 myNginx

docker-compose는 네트워크를 컨테이너에 마운트합니다.

docker-compose up -d 명령을 사용하여 컨테이너 그룹을 조정하면 기본적으로 네트워크가 생성되고 이 그룹의 모든 컨테이너가 네트워크에 추가됩니다. 컨테이너는 서비스 이름을 사용하여 직접 통신할 수 있습니다.

네트워크를 지정하려면 다음 구성을 참조하세요.

networks:
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: "192.168.0.101/16"
          gateway: 192.168.0.100

네트워크를 구성한 후 각 서비스에서 사용할 네트워크를 지정할 수 있습니다.

version: '3'
services:
  nginx:
    image: nginx:alpine
    container_name: nginx-dev
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "80:80"
    volumes:
      - /usr/local/docker/workspace/nginx/html:/usr/share/nginx/html
      - /usr/local/docker/workspace/nginx/conf/nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - mynet
      
networks:
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: "192.168.0.101/16"
          gateway: 192.168.0.100

이러한 방식으로 컨테이너를 정렬하면 모든 컨테이너가 이 사용자 정의 네트워크에 연결됩니다mynet.

Guess you like

Origin blog.csdn.net/watson2017/article/details/134618407