跨主機通訊

JOIN容器:container(共享網絡協議棧)html

容器和容器之間。linux

[root@localhost ~]# docker pull busyboxweb

[root@localhost ~]# docker run -itd --name web5 busybox:latest docker

把網卡指定web5:數據庫

[root@localhost ~]# docker run -itd --name web6 --network container:web5 busybox:latest bootstrap

Web6:vim

[root@localhost ~]# docker exec -it web6 /bin/sh瀏覽器

/ # echo 123456 > /tmp/index.html安全

/ # httpd -h /tmp/網絡

Web5:

[root@localhost ~]# docker exec -it web5 /bin/sh

/ # wget -O - -q 127.0.0.1

這時會發現,兩個容器的ip地址同樣。

PS:這種方法的使用場景:因爲這種網絡的特殊性,通常在運行同一個服務,而且合格服務須要作監控,以及日誌收集,或者網絡監控的時候,能夠選擇這種網絡。

docker的跨主機網絡解決方案

Overlay的解決方案(覆蓋型解決方案)

實驗環境:

Docker01:1.10

Docker02:1.20

Docker03:1.30

暫時不考慮防火牆和selinux安全問題。

將3臺Dockerhost防火牆和selinux所有關閉,而且分別更改主機名稱

[root@localhost ~]# hostnamectl set-hostname docker01

[root@localhost ~]# su -

[root@docker01 ~]# systemctl stop firewalld

[root@docker01 ~]# systemctl disable firewalld

[root@docker01 ~]# setenforce 0

Docker01:

[root@docker01 ~]# rz
導入鏡像包:

跨主機通訊
[root@docker01 ~]# docker load -i myprogrium-consul.tar
跨主機通訊
-h:hostname,主機名 -server -bootstrap:集羣

啓動consul服務:consul:分佈式,數據庫,數據中心,集羣的方式存儲東西

[root@docker01 ~]#docker run -d -p 8500:8500 -h consul --name consul --restart always progrium/consul -server -bootstrap

報錯重啓服務:

[root@docker01 ~]# systemctl restart docker

PS:容器生產以後,咱們能夠經過瀏覽器訪問consul服務,驗證consul服務是否正常。訪問dockerHost加映射端口。

訪問:

http://192.168.1.10:8500/
跨主機通訊
修改Docker02和Docker03的配置文件

Docker02:

[root@docker02 ~]# vim /usr/lib/systemd/system/docker.service

13行:

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376 --cluster-store=consul://192.168.1.10:8500 --cluster-advertise=ens33:2376

[root@docker03 ~]# systemctl daemon-reload

[root@docker03 ~]# systemctl restart docker

Docker03同上

PS:返回瀏覽器consul服務界面沒找到KEY/VALUE----->DOCKER------>NODES會看到剛剛加入的docker02的信息。

在docker02上建立自定義網絡: global(全局)

在docker02上建立的網絡,咱們能夠看到它的SCOPE定義的是global(全局),意味着加入到consul這個服務的docker服務,均可以看到咱們自定義的網絡。

同理若是是用此網絡建立的容器,會有兩張網卡。

默認這張網卡的網段是10.0.0.0網段,若是想要docker01也能夠看到這個網絡,那麼也只需在docker01的配置文件添加相應內容便可。

同理,由於是自定義網絡,符合組定義網絡的特性,能夠直接經過docker容器的名稱相互通訊,固然也能夠在自定義網絡的時候,指定它的網段,那麼是用此網絡

docker network create -d overlay ov_net1
跨主機通訊
在docker03上查看網卡:
跨主機通訊
在docker01上修改配置文件,重啓docker查看:

[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service

13行:

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376 --cluster-store=consul://192.168.1.10:8500 --cluster-advertise=ens33:2376

[root@docker01 ~]# systemctl daemon-reload

[root@docker01 ~]# systemctl restart docker

[root@docker01 ~]# docker network ls
跨主機通訊

Docker01:

[root@docker01 ~]# docker run -itd --name t1 --network ov_net1 busybox

[root@docker01 ~]# docker exec -it t1 /bin/sh

/ # ip a

Docker02:

[root@docker02 ~]# docker run -itd --name t2 --network ov_net1 busybox

[root@docker02 ~]# docker exec -it t1 /bin/sh

/ # ip a

Docker03:

[root@docker03 ~]# docker run -itd --name t3 --network ov_net1 busybox

[root@docker03 ~]# docker exec -it t1 /bin/sh

/ # ip a

跨主機通訊

相關文章
相關標籤/搜索