간 용기 도커 호스트 통신 솔루션
도커 네트워크 드라이브
- 오버레이 : 오버레이 네트워크를 기반으로 구현 된 도커 기본 패키지 VXLAN
- Macvlan : 도커 호스트 인터페이스 논리 카드 하위 인터페이스 복수로 나누어, 각 서브 - 인터페이스는 VLAN을 식별한다. 호스트 인터페이스는 직접 도커 용기를 연결
- 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
|