Docker 命令之 --network 参数
在 Docker 中实现容器间互访的常见解决方案如下,根据实际需求选择合适的方式。
推荐装有 docker 的主机上,不管任何情况,先创建一个自定义网络,后面的容器一律使用 --network 加入进来。
使用自定义网络(推荐)
原理:通过创建 Docker 自定义桥接网络,容器间可通过容器名称直接通信,无需依赖易变的 IP 地址。 步骤:
shell
# 创建自定义网络:
docker network create network_default
# 列出所有网络
docker network ls
# 查看网络详情(包括连接的容器)
docker network inspect network_default
# 启动容器时加入同一网络:
docker run --name container1 --network network_default -d image1
docker run --name container2 --network network_default -d image2
# 在容器内部通过名称访问:
ping container1
# 在container2中直接使用容器名
优点:支持双向通信,IP 变化无影响,网络隔离性强。
Docker Compose 自动管理
原理:通过 docker-compose.yml 定义服务,所有服务默认加入同一网络,自动实现容器名解析。
示例配置:
shell
version: "3"
services:
app:
image: your-app-image
depends_on:
- mysql
- redis
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
redis:
image: redis:alpine
启动后,app 容器可直接通过服务名 mysql 或 redis 访问对应容器。
总结建议
生产环境首选:使用自定义网络或 Docker Compose,避免依赖 IP 和过时方法。
调试技巧:进入容器后通过 ping 或 nmap 验证网络连通性。
安全提示:避免直接暴露数据库等敏感服务端口到宿主机。