docker网络连接——docker network connect命令

897 阅读1分钟

 docker network connect 命令是用于将docker容器连接到某个网络中,或者与其他容器建联,容器可以使用容器名或者容器ID。

用法

docker network connect [OPTIONS] NETWORK CONTAINER

选项

名称,简写默认说明
--alias为容器添加网络范围的别名
--ip指定IP地址
--ip6指定IPv6地址
--link添加链接到另一个容器
--link-local-ip添加容器的链接本地地址

相关命令

命令名称说明
docker network connect将容器连接到网络
docker network create创建一个网络
docker network disconnect断开容器的网络
docker network inspect显示一个或多个网络的详细信息
docker network ls列出网络
docker network prune删除所有未使用的网络
docker network rm删除一个或多个网络


举几个栗子:

  1. 运行中的容器ctn1 连接/断连 到网络net1中,
$ docker network connect net1 ctn1
or
$ docker network disconnect net1 ctn1
  1. 在启动容器ctn1时,连接到网络net1上,
$ docker run -itd --network=net1 ctn1
  1. 给容器分配指定ip(192.168.10.10)
$ docker network connect --ip 192.168.10.10 net1 ctn1
  1. 使用--link实现两个容器互连

--link:在启动my-ctn2容器时,建立my-ctn1和my-ctn2容器间的连接,此时会在my-ctn2容器的/etc/hosts中添加域名解析。并且当容器IP变化时,docker会自动维护映射关系

$ docker network connect --link my-ctn1 my-ctn2

#在my-ctn2中

#cat /etc/hosts
127.0.0.1 
localhost
172.17.0.5 
my-ctn1
  1. --alias:为容器在网络范围内添加一个别名。

     在网络范围内添加别名是什么意思呢?下面我们通过一个栗子来看看它的用法:

# 运行container6容器,并给container6添加一个scoped-app的别名
docker run --net=mynet -itd --name=container6 --net-alias app busybox
docker network connect --alias scoped-app local_alias container6

# 运行container7容器,同样给container7添加一个scoped-app的别名
docker run --net=isolated_nw -itd --name=container7 --net-alias app busybox
docker network connect --alias scoped-app local_alias container7

# 这时再从另外一个容器中查看效果
# 在container4中
docker exec -it container4 sh
ping app # 访问container6的IP
exit

docker stop container6
docker exec -it container4 sh
ping app # 访问的container7的IP

    可以看到,对多个容器添加网络范围内别名时,一定程度上可以实现网络HA功能。

  1. 创建网络,并指定subnet和ip范围
$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network