Docker跨主機容器通信overlay實現過程詳解
同樣是兩臺服務器:
準備工作:
設置容器的主機名
consul:kv類型的存儲數據庫(key:value) docker01、02上: vim /etc/docker/daemon.json { "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"], 這行改了要修改自己的docker配置文件 "cluster-store": "consul://10.0.0.11:8500", "cluster-advertise": "10.0.0.11:2376" 另外一臺寫自己的ip即可 } vim /etc/docker/daemon.json vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock 這行改成這樣,兩臺的都要改 systemctl daemon-reload systemctl restart docker
docker01上:
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap 這條命令在設置容器的主機名之后做 [root@docker1 centos_zabbix]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 10.0.0.11:5000/kode v2 6914fda5fd44 4 hours ago 502MB kode v2 6914fda5fd44 4 hours ago 502MB 10.0.0.11:5000/centos6.9_nginx_ssh v3 92b1087df3f5 13 hours ago 431MB centos6.9_nginx_ssh v3 92b1087df3f5 13 hours ago 431MB centos6.9_nginx_ssh v2 6307e23ee16d 13 hours ago 431MB <none> <none> b94c822488f9 13 hours ago 431MB centos6.9_nginx_ssh v1 f01eeebf918a 13 hours ago 431MB <none> <none> 54167f1d659b 13 hours ago 431MB <none> <none> 71474e616504 13 hours ago 430MB centos6.9_ssh v2 03387f99f022 14 hours ago 307MB <none> <none> 82d0e9ce844b 14 hours ago 195MB kode v1 c0f486ac58fe 15 hours ago 536MB progrium/consul latest 09ea64205e55 4 years ago 69.4MB 這里有了 [root@docker1 centos_zabbix]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1016753ee64d progrium/consul "/bin/start -server …" 4 minutes ago Exited (255) 3 minutes ago 53/tcp, 53/udp, 8300-8302/tcp, 8400/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp consul
最后在頁面上訪問:
2)創(chuàng)建overlay網絡
docker network create -d overlay --subnet 172.16.1.0/24 --gateway 172.16.1.254 ol1 這個網段不能和宿主機上相同,并且隨便在一臺上執(zhí)行這個命令即可
查看容器的網絡,有沒有出現overlay
[root@docker1 shell]# docker network ls NETWORK ID NAME DRIVER SCOPE e480a4fe5f4b bridge bridge local 0a3cbfe2473f host host local 4e5ccdc657e1 macvlan_1 macvlan local aab77f02a0b1 none null local 8ae111afded7 ol1 overlay global
3)啟動容器測試
一臺上: docker run -it --network ol1 --name test01 centos6.9_ssh:v2 /bin/bash 另外一臺上: docker run -it --network ol1 --name test02 centos6.9_ssh:v2 /bin/bash 之后可以通過test01和test02之間聯通
之后可以通過test01和test02之間聯通
真實原理:
每個容器有兩塊網卡,eth0實現容器間的通訊,eth1實現容器訪問外網
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解使用?docker?compose?部署?golang?的?Athens?私有代理問題
這篇文章主要介紹了使用?docker-compose?部署?golang?的?Athens?私有代理,幫助大家快速學習athens 如何構建私有代理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04利用?trap?在?docker?容器優(yōu)雅關閉前執(zhí)行環(huán)境清理的方案
這篇文章主要介紹了利用?trap?在?docker?容器優(yōu)雅關閉前執(zhí)行環(huán)境清理的問題,需要在容器的啟動腳本中,加入 trap 指令,來完成容器在退出前需要做的所有事情,本文通過腳本示例給大家介紹的非常詳細,需要的朋友參考下吧2021-12-12Docker部署php運行環(huán)境(php-fpm+nginx)
Docker?是一種流行的容器化平臺,可以幫助開發(fā)人員快速創(chuàng)建、部署和管理容器化應用程序,本文將介紹如何使用?Docker?搭建?PHP?開發(fā)環(huán)境服務器,讓您能夠輕松地開始?PHP?開發(fā)工作,感興趣的可以了解一下2023-11-11