Skip to content

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 验证网络连通性。

安全提示:避免直接暴露数据库等敏感服务端口到宿主机。