Docker提供了多种网络模式来管理容器间的通信:
# 创建两个容器
docker run -d --name container1 nginx
docker run -d --name container2 nginx
# 在container2中ping container1
docker exec -it container2 ping container1
注意:默认bridge网络需要通过IP地址通信,除非使用
--link
(已弃用)
# 创建自定义网络
docker network create my-network
# 将容器连接到自定义网络
docker run -d --name container3 --network my-network nginx
docker run -d --name container4 --network my-network nginx
# 现在容器可以通过名称互相访问
docker exec -it container4 ping container3
# 容器使用主机网络
docker run -d --name container5 --network host nginx
# 将容器端口映射到主机
docker run -d --name container6 -p 8080:80 nginx
# 其他容器可通过主机IP访问
# 创建网络时指定DNS
docker network create --driver=bridge --subnet=192.168.100.0/24 --gateway=192.168.100.1 --dns=8.8.8.8 my-dns-network
docker network create --subnet=172.20.0.0/16 my-static-ip-net
docker run -d --net my-static-ip-net --ip 172.20.0.10 --name static-container nginx
# 将现有容器连接到网络
docker network connect my-network existing-container
docker network ls
docker network inspect [NETWORK_NAME]
docker inspect [CONTAINER_NAME]
docker exec [CONTAINER] ping [TARGET]
docker exec [CONTAINER] ip route
--icc=false
--privileged
模式通过以上配置,您可以灵活地管理Docker容器间的网络连接和通信需求。