1.创建一个bridge网络

bridge 网络用于在本机内容器之间的互通

docker network -d 指定网络类型 网络名称
如果不-d指定网络类型默认就是bridge

docker network create -d bridge   my-net
或
docker network create  my-net

Doker 会为自定义的网络自动分配一个子网

2.创建一个 bridge网络并指定子网

docker network create  --subnet=172.20.0.0/16 my-net_172_20
#--subnet 指定子网IP以及子网掩码

3.示例

3.1规划docker容器网络

第一台网络:默认bridge网络
第二台:

  • 网络一:bridge默认网络
  • 网络二:自建网络

第三台:自建网络

3.2 创建三台docker容器

[root@bogon ~]# docker run -itd --rm --name n1 busybox  #创建第一台容器
7d8931399d22a5b3db8dc05d56d488bd5a3345ba72f50ef9f25bea3c33b63ebd
[root@bogon ~]# docker run -itd --rm --name n2 busybox   #创建第二台容器
f0e397429cabe4abd7acde4c0591ee58d13fb4936a7965d3f2e02c2ad2939d87
[root@bogon ~]# docker network create -d bridge --subnet 172.20.0.0/16 my-net    #创建自建网络
70b769f52acdf465acf54ab249b0faf934a8f646e202c27e27dc7206f11492f8
[root@bogon ~]# docker network connect my-net n2  #给第二台容器添加第二个网络
[root@bogon ~]# docker run -itd --rm --network my-net --name n3 busybox  #创建第三台网络并指定自建网络
ee44e70c94cda363a2e07fd25c33a829d34125f71a9e28a3df39f03294c06a0f

3.3 尝试利用容器名进行通信测试

Docker嵌入式DNS服务器可以为连接到给定网络的容器启用名称解析。

也就是说目前在 n2 中可以使用容器名和 n3 进行通信。
但是由于默认的网络 bridge 只支持通过 IP 地址通信

#n2 ping n3  用容器名就可ping
[root@bogon ~]# docker exec -it n2 /bin/sh
/ # ping n3 
PING n3 (172.20.0.3): 56 data bytes
64 bytes from 172.20.0.3: seq=0 ttl=64 time=0.103 ms
64 bytes from 172.20.0.3: seq=1 ttl=64 time=0.052 ms
^C
--- n3 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.052/0.077/0.103 ms
#n1 ping n2 必须使用IP地址
[root@bogon ~]# docker exec -it n1 /bin/sh
/ # ping 172.17.0.5
PING 172.17.0.5 (172.17.0.5): 56 data bytes
64 bytes from 172.17.0.5: seq=0 ttl=64 time=0.112 ms
^C
--- 172.17.0.5 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.112/0.112/0.112 ms

4. 操作网络的命令

4.1 创建容器指定网络

docker run -itd --rm --network my-net  centos:7

4.2 创建容器指定IP地址

docker run -itd --rm --network my-net  centos:7 --ip 172.20.0.100 centos:7

4.3 给容器加入自建网络

docker network connect my-net n2

4.4 从网络中断开一个容器的连接

docker  network  disconnect     网络名     容器名
docker network disconnect my-net n2

4.5 删除一个自定义的网络

docker network rm 网络名
docker network rm my-net
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐