도커 용기는 통신 네트워크를 통해 호스트 --overlay

간 용기 도커 호스트 통신 솔루션

  도커 네트워크 드라이브

  1. 오버레이 : 오버레이 네트워크를 기반으로 구현 된 도커 기본 패키지 VXLAN
  2. Macvlan : 도커 호스트 인터페이스 논리 카드 하위 인터페이스 복수로 나누어, 각 서브 - 인터페이스는 VLAN을 식별한다. 호스트 인터페이스는 직접 도커 용기를 연결
  3. LAN 인터페이스 : 다른 호스트 라우팅 정책에 앞으로 도커

   타사 네트워크 프로젝트

        터널 옵션

    - 플란넬 : VLAN 지원 UDP 캡슐화 및 전송

               - 위브 : UDP (슬리브 모드) 및 VXLAN 지원 (fastdb 우선 모드)

               - OpenvSwitch : GRE 프로토콜과는 VXLAN을 지원합니다

             라우팅 방식

                옥양목 : BGP 프로토콜 및 IPIP 터널을 지원합니다. 호스트로 각각의 가상 라우터는 BGP를 통해 다른 호스트 컨테이너 사이의 통신을 달성 

二, 도커 오버레이 네트워크

  오버레이 네트워크는 일부 합의 된 통신 프로토콜, (2 개) 패킷을 IP 패킷으로 새로운 데이터 포맷 위에 밀봉 층을 통해 기존의 네트워크 인프라 구조를 변경하지 않고 전제를 말한다. 이것은 단지 정교한 IP 라우팅 프로토콜 프로세스 데이터 분산을 최대한 활용 할 수 없습니다, 그리고, 브로드 캐스트 트래픽을 변환 할 수 있습니다 필요한 경우 확장 된 절연 정체성 중간 오버레이 기술의 사용은 16M 사용자에게 4000 제한을 통해 VLAN 지원의 수를 나눌 수 있습니다 멀티 캐스트 트래픽은 홍수를 방지하기 위해 데이터를 방송.

  따라서, 오버레이 네트워크는 실제로 컨테이너 상호 노드 데이터 전송 및 라우팅 방식의 대부분의 주류입니다.

  도커 기본 오버레이 네트워크를 사용하려면 다음 조건이 충족되어야

  • 도커 실행 떼
  • 부두 노동자 호스트 클러스터의 키 - 값 저장소를 사용하여

셋째, 키 - 값 저장소를 사용하여 부두 노동자 호스트 클러스터를 구축

  다음과 같은 조건을 충족해야합니다 :

  • 클러스터 호스트는 키 - 값 저장소 도커 지원 접속된다 영사 Etcd 및 사육사
  • 데몬을 실행 도커 클러스터 호스트
  • 호스트 이름을 사용하여 키 - 값 저장소가 클러스터 구성원을 식별 할 수 있기 때문에 클러스터의 호스트는, 고유 한 호스트 이름이 있어야합니다
  • 리눅스 클러스터 호스트 커널 버전 3.12+, 지원 VXLAN 패킷 처리, 그렇지 않으면 지나갈 수

넷째, 배포

  4.1 시스템 환경

     

1
# docker -v
Docker version  17.12 . 0 - ce, build c97c6d6

  4.2 설치 영사

1
4
5
6
(7)
8
9
(10)
(11)
(12)
# wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_386.zip
 
# unzip consul_1.0.6_linux_amd64.zip
 
# mv consul /usr/bin/ && chmod a+x /usr/bin/consul
 
# 启动
nohup consul agent  - server  - bootstrap  - ui  - data - dir  / data / docker / consul \
- client = 172.16 . 200.208  - bind = 172.16 . 200.208  &>  / var / log / consul.log &
 
#-ui : consul 的管理界面
#-data-dir : 数据存储

  4.3 Dockre 노드 구성 데몬 연결 영사

  두 시스템에서 수정해야

        docker2

1
4
5
6
(7)
# vim /lib/systemd/system/docker.service
 
ExecStart = / usr / bin / dockerd   - H tcp: / / 0.0 . 0.0 : 2375  - H unix: / / / var / run / docker.sock  - - cluster - store consul: / / 172.16 . 200.208 : 8500  - - cluster - advertise  172.16 . 200.208 : 2375
 
# systemctl daemon-reload
 
# systemctl restart docker

  docker3

1
4
5
6
(7)
# vim /lib/systemd/system/docker.service
 
ExecStart = / usr / bin / dockerd   - H tcp: / / 0.0 . 0.0 : 2375  - H unix: / / / var / run / docker.sock  - - cluster - store consul: / / 172.16 . 200.208 : 8500  - - cluster - advertise  172.16 . 200.223 : 2375
 
# systemctl daemon-reload
 
# systemctl restart docker

  4.4보기 노드 정보 영사

  http://172.16.200.208:8500

  

  4.5 오버레이 네트워크를 구축하는  

1
4
5
6
(7)
8
9
(10)
(11)
(12)
# docker network create -d overlay multi_host
53b042104f366cde2cc887e7cc27cde52222a846c1141690c93e1e17d96120c5
 
# docker network ls
 
 
NETWORK  ID           NAME                  DRIVER              SCOPE
3f5ff55c93e6         bridge                bridge              local
1e3aff32ba48         composelnmp_default   bridge              local
0d60b988fe59         composetest_default   bridge              local
b4cf6d623265        host                  host                local
53b042104f36         multi_host

  -d : 네트워크 생성 타입을 지정

  또 다른 기계가 자동으로 새로운 네트워크를 동기화합니다

  자세한 내용은

复制代码
# docker network inspect multi_host
[
    {
        "Name": "multi_host",
        "Id": "53b042104f366cde2cc887e7cc27cde52222a846c1141690c93e1e17d96120c5",
        "Created": "2018-03-07T16:23:38.682906025+08:00",
        "Scope": "global",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.0.0.0/24",
                    "Gateway": "10.0.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
复制代码

 

  4.6 使用overlay网络启动容器

  分别在两台机器上使用overlay网络启动一个容器

1
# docker run -it --net=multi_host busybox

  这两个节点上的容器的ip分别为: 

1
2
3
4
5
6
7
8
9
[root@docker2 ~] # docker run -it --net=multi_host busybox
/  # ifconfig
eth0      Link encap:Ethernet  HWaddr  02 : 42 : 0A : 00 : 00 : 02 
           inet addr: 10.0 . 0.2   Bcast: 10.0 . 0.255   Mask: 255.255 . 255.0
           UP BROADCAST RUNNING MULTICAST  MTU: 1450   Metric: 1
           RX packets: 0  errors: 0  dropped: 0  overruns: 0  frame: 0
           TX packets: 0  errors: 0  dropped: 0  overruns: 0  carrier: 0
           collisions: 0  txqueuelen: 0
           RX bytes: 0  ( 0.0  B)  TX bytes: 0  ( 0.0  B)

 

1
2
3
4
5
6
7
8
/  # ifconfig
eth0      Link encap:Ethernet  HWaddr  02 : 42 : 0A : 00 : 00 : 03 
           inet addr: 10.0 . 0.3   Bcast: 10.0 . 0.255   Mask: 255.255 . 255.0
           UP BROADCAST RUNNING MULTICAST  MTU: 1450   Metric: 1
           RX packets: 0  errors: 0  dropped: 0  overruns: 0  frame: 0
           TX packets: 0  errors: 0  dropped: 0  overruns: 0  carrier: 0
           collisions: 0  txqueuelen: 0
           RX bytes: 0  ( 0.0  B)  TX bytes: 0  ( 0.0  B)

  它们之间是可以相互ping 通的

1
2
3
4
5
# ping 10.0.0.2
PING  10.0 . 0.2  ( 10.0 . 0.2 ):  56  data bytes
64  bytes  from  10.0 . 0.2 : seq = 0  ttl = 64  time = 11.137  ms
64  bytes  from  10.0 . 0.2 : seq = 1  ttl = 64  time = 0.251  ms
64  bytes  from  10.0 . 0.2 : seq = 2  ttl = 64  time = 0.280  ms

추천

출처www.cnblogs.com/gaoyuechen/p/11433125.html