容器互联

官方强烈建议,放弃古老的 --link 方式,故下文不介绍该方式

虚拟 IP 方式(不建议)

bridge 网络方式(建议)

创建一个网络 docker network create -d bridge lnmpr-net

移除一个网络 docker network rm lnmpr-net

查看所有网络 docker network ls

容器离开自定义网络 docker network disconnect lnmpr-net nginx

查看指定网络 docker network inspect lnmpr-net,内容如下

[
  {
    "Name": "lnmpr-net",
    "Id": "625377cf57851373e929f572dd8901727d842240f0b4c61b284b9bba6893dd30",
    "Created": "2021-08-23T06:23:30.844869Z",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
      "Driver": "default",
      "Options": {},
      "Config": [
        {
          "Subnet": "172.19.0.0/16",
          "Gateway": "172.19.0.1"
        }
      ]
    },
    "Internal": false,
    "Attachable": false,
    "Ingress": false,
    "ConfigFrom": {
      "Network": ""
    },
    "ConfigOnly": false,
    "Containers": {},
    "Options": {},
    "Labels": {}
  }
]

运行相应容器,并加入 lnmpr-net 网络

# 运行 MySQL 并加入网络
docker run --name mysql_3 -itdp 10003:3306 -e MYSQL_ROOT_PASSWORD=123456 --mount type=bind,source=D:/Docker/MySQL,target=/var/lib/mysql --network lnmpr-net mysql:8.0.26

# 运行 Redis 并加入网络
docker run --name redis -dp 20000:6379 --mount type=bind,source=D:/Docker/Redis,target=/data --network lnmpr-net redis:6 redis-server /data/docker_redis.conf --appendonly yes

查看 lnmpr-net 网络,docker network inspect lnmpr-net,内容如下

[
  {
    "Name": "lnmpr-net",
    "Id": "625377cf57851373e929f572dd8901727d842240f0b4c61b284b9bba6893dd30",
    "Created": "2021-08-23T06:23:30.844869Z",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
      "Driver": "default",
      "Options": {},
      "Config": [
        {
          "Subnet": "172.19.0.0/16",
          "Gateway": "172.19.0.1"
        }
      ]
    },
    "Internal": false,
    "Attachable": false,
    "Ingress": false,
    "ConfigFrom": {
      "Network": ""
    },
    "ConfigOnly": false,
    "Containers": {
      "05c5e4f414e1a64e4ff11c484d7d218450a3acef444c42e84bf88046753ee77a": {
        "Name": "redis",
        "EndpointID": "419c3c7dd626e0bce41d5ac735514138530f64f4d58eeb86830ab4deb47a5b44",
        "MacAddress": "02:42:ac:13:00:03",
        "IPv4Address": "172.19.0.3/16",
        "IPv6Address": ""
      },
      "ba89624fcb22a0300686cf3f229aa38be367b599a2c05b4096fa5f608e51700e": {
        "Name": "mysql_3",
        "EndpointID": "0488c679bf7b5534a478db716c53475f3b72d35add58c404b708d42fa35bd2e3",
        "MacAddress": "02:42:ac:13:00:02",
        "IPv4Address": "172.19.0.2/16",
        "IPv6Address": ""
      }
    },
    "Options": {},
    "Labels": {}
  }
]

测试是否能互通,进入相应的容器,使用 ping 命令即可,若提示命令没找到,执行安装语句 apt-get update && apt install iputils-ping

将运行中的容器连接到已经存在的用户自定义网桥

docker network connect my-net my-nginx

断开容器到用户自定义网络的连接

docker network disconnect my-net my-nginx