在Debian系统上,首先需要安装Docker并确保其正常运行。通过以下命令完成安装:
sudo apt update && sudo apt install docker.io -y
sudo systemctl start docker && sudo systemctl enable docker
安装完成后,验证Docker服务状态:sudo systemctl status docker(应为“active (running)”)。
Docker默认创建名为bridge的虚拟网桥,未指定网络的容器均连接至此网络,容器通过IP地址直接通信。
docker network ls
# 输出应包含"bridge"网络(驱动为"bridge")
启动两个测试容器(如Nginx),并获取它们的IP地址:
docker run -d --name container1 nginx
docker run -d --name container2 nginx
IP1=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container1)
IP2=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2)
echo "Container1 IP: $IP1, Container2 IP: $IP2"
进入container1,pingcontainer2的IP:
docker exec -it container1 ping $IP2
# 若通,则表示默认桥接网络通信正常
缺点:IP地址可能变化,需每次重新获取,不适合长期稳定的通信场景。
自定义桥接网络解决了默认网络的IP变动问题,支持容器名称解析(无需记IP),且隔离性更好。
docker network create --driver bridge my_bridge
# 可选:指定子网和网关(更规范)
docker network create --driver bridge --subnet=192.168.1.0/24 --gateway=192.168.1.1 my_bridge
docker run -d --name container1 --network my_bridge nginx
docker run -d --name container2 --network my_bridge nginx
进入container1,通过容器名称pingcontainer2:
docker exec -it container1 ping container2
# 容器名称可直接解析为IP,通信更便捷
优势:容器名称即主机名,无需记忆IP;网络隔离性好,适合生产环境。
若需从Debian主机访问容器内的服务(如Web服务),需将主机的端口映射到容器端口。
docker run -d --name web_container --network my_bridge -p 8080:80 nginx
在Debian主机上,通过浏览器或curl访问http://localhost:8080,若看到Nginx欢迎页面,则映射成功。
对于多容器服务(如Web+数据库),使用Docker Compose可简化网络配置,自动创建自定义网络并管理容器依赖。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose.yml文件version: '3'
services:
web:
image: nginx
ports:
- "8080:80" # 主机8080→容器80
networks:
- my_bridge
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 123456
networks:
- my_bridge
networks:
my_bridge:
driver: bridge
subnet: 192.168.1.0/24
gateway: 192.168.1.1
docker-compose up -d
http://localhost:8080,查看Web服务;web容器,pingdb容器:docker exec -it compose_project_web_1 ping db
# compose_project为项目名称(目录名),web_1为web服务容器名
优势:一键启动多容器服务,自动配置网络,适合复杂应用部署。
容器直接使用主机的网络栈,无需端口映射,性能最佳,但安全性低(容器与主机共享网络命名空间)。
docker run -d --name host_container --network host nginx
适用于Docker Swarm集群,支持多主机间的容器通信(需配置Swarm模式)。
docker network create --driver overlay my_overlay
# 需在Swarm集群的每个节点上启动容器并连接到此网络
注意:主机网络和Overlay网络需根据实际场景选择,一般自定义桥接网络已满足多数需求。
docker network inspect my_bridge),或容器是否运行(docker ps);sudo netstat -tulnp | grep 8080)。通过以上步骤,可实现Debian系统与Docker容器间的高效、稳定通信,满足不同场景的需求。