在Ubuntu上配置Docker容器间通信,可根据需求选择不同网络模式,以下是具体方法及对应命令:
bridge
网络,容器通过虚拟网桥通信,需通过IP或容器名访问。docker network ls
。bridge
):docker run -d --name container1 ubuntu
docker run -d --name container2 ubuntu
docker exec -it container1 bash
,然后执行ip addr
。/etc/docker/daemon.json
)。docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 my_bridge
docker run -d --name container1 --network my_bridge --ip 172.18.0.10 ubuntu
docker run -d --name container2 --network my_bridge --ip 172.18.0.20 ubuntu
docker exec -it container1 ping 172.18.0.20 # 通过IP通信
docker exec -it container1 ping container2 # 通过容器名通信(需配置DNS)
docker run -d --network host --name container1 nginx
docker run -d --network host --name container2 nginx
容器间可直接通过localhost
或宿主机IP+端口访问。docker swarm init --advertise-addr <主机IP>
docker network create --driver overlay --attachable my_overlay
docker service create --name web --network my_overlay nginx
docker-compose.yml
文件:version: '3'
services:
web:
image: nginx
networks:
- my_network
db:
image: mysql
networks:
- my_network
networks:
my_network:
driver: bridge
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
启动服务:docker-compose up -d
。docker network connect
手动连接(仅限部分模式)。host
模式处理敏感数据,优先选择bridge
或overlay
并配置防火墙规则。根据实际需求选择模式,单机开发推荐bridge
或自定义桥接
,分布式场景选择overlay
。