在CentOS下使用Docker實現容器間通信,主要有以下幾種方式:
Docker默認會創建一個名為bridge
的虛擬網橋,所有未指定網絡的容器都會連接到這個網橋上。容器之間可以通過IP地址進行通信。
啟動容器:
docker run -dit --name container1 nginx
docker run -dit --name container2 nginx
查看容器IP地址:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2
容器間通信:
在container1
中訪問container2
:
curl http://<container2-ip>
自定義橋接網絡可以提供更好的隔離性和性能。
創建自定義橋接網絡:
docker network create my_bridge_network
啟動容器并連接到自定義網絡:
docker run -dit --name container1 --network my_bridge_network nginx
docker run -dit --name container2 --network my_bridge_network nginx
容器間通信:
在container1
中訪問container2
:
curl http://container2
如果需要容器直接使用主機的網絡棧,可以使用--network host
選項。
啟動容器并使用主機網絡:
docker run -dit --name container1 --network host nginx
docker run -dit --name container2 --network host nginx
容器間通信:
在container1
中訪問container2
:
curl http://localhost:80
Macvlan網絡允許你在Docker主機上創建虛擬以太網接口,并為每個容器分配一個唯一的MAC地址。
創建Macvlan網絡:
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 \
my_macvlan_network
啟動容器并連接到Macvlan網絡:
docker run -dit --name container1 --network my_macvlan_network nginx
docker run -dit --name container2 --network my_macvlan_network nginx
容器間通信:
在container1
中訪問container2
:
curl http://container2
Overlay網絡適用于跨多個Docker主機的容器通信。
創建Overlay網絡:
docker network create -d overlay \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
my_overlay_network
啟動容器并連接到Overlay網絡:
docker run -dit --name container1 --network my_overlay_network nginx
docker run -dit --name container2 --network my_overlay_network nginx
容器間通信:
在container1
中訪問container2
:
curl http://container2
通過以上幾種方式,你可以在CentOS下使用Docker實現容器間的通信。選擇哪種方式取決于你的具體需求和應用場景。