千家信息网

Docker网络命令的示例分析

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关Docker网络命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。•docker network create•docker
千家信息网最后更新 2025年12月02日Docker网络命令的示例分析

这篇文章将为大家详细讲解有关Docker网络命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

•docker network create
•docker network connect
•docker network ls
•docker network rm
•docker network disconnect
•docker network inspect

创建网络

zane@zane-V:~$ docker network create simple-networkzane@zane-V:~$ docker network inspect simple-network {  "Name": "simple-network",  "Id": "8bf58f43c56622d1100f7da9ef6506e45a4aa68556b586311f3756130c311d75",  "Scope": "local",  "Driver": "bridge",  "EnableIPv6": false,  "IPAM": {   "Driver": "default",   "Options": {},   "Config": [    {     "Subnet": "172.20.0.0/16",     "Gateway": "172.20.0.1/16"    }   ]  },  "Internal": false,  "Containers": {},  "Options": {},  "Labels": {} }

•进入一个键值存储。引擎支持Consul,Etcd,ZooKeeper.
•在群集中的每个主机上正确配置的deamon引擎

支持overlay网络的docker选项:

•--cluster-store-opt

使用--subnet选项直接指定子网络,在bridge网络中只可以指定一个子网络,而在overlay网络中支持多个子网络。
除了--subnet,还可以指定:--gateway,--ip-range,--aux-address选项。

$ docker network create -d overlay \--subnet=192.168.0.0/16 \--subnet=192.170.0.0/16 \--gateway=192.168.0.100 \--gateway=192.170.0.100 \--ip-range=192.168.1.0/24 \--aux-address="my-switch=192.168.1.6" \--aux-address="my-nas=192.170.1.6" \

如何要创建自己定制的网络,docker也是支持很多选项的。
可以指定网络的端口号:

$ docker run -d -P --name redis --network my-network redis $ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbafb0c808c53 redis "/entrypoint.sh redis" 4 seconds ago Up 3 seconds 172.23.0.1:32770->6379/tcp redis

连接容器

可以连接已存在的容器到一个或者多个网络中。一个容器可以连接到多个不同网络驱动的网络中。
当连接一旦建立,容器便可以可其他的容器通讯,通过IP 或者 容器名称。

基本容器网络实例:

1.创建两个容器,container1 和 container2

$ docker run -itd --name=container1 busybox $ docker run -itd --name=container2 busyboxzane@zane-V:~$ docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw

3.连接container2到这个网络,然后验证一下:

zane@zane-V:~$ docker network connect isolated_nw container2 zane@zane-V:~$ docker network inspect isolated_nw {  "Name": "isolated_nw",  "Id": "a8208641505d2d8fc37bf7cbd1027c01f0def461815786e076ef4ae65b7b2f9b",  "Scope": "local",  "Driver": "bridge",  "EnableIPv6": false,  "IPAM": {   "Driver": "default",   "Options": {},   "Config": [    {     "Subnet": "172.25.0.0/16"    }   ]  },  "Internal": false,  "Containers": {   "e9bce535ae32945f5e43340facdb6c16c93d92119e85b61c6cb7a5379a0caf63": {    "Name": "container2",    "EndpointID": "ef7244d32484407c3ec4aa30b7bdb0a6cbe3dbbfedc03e5c856ad20a08af172f",    "MacAddress": "02:42:ac:19:00:02",    "IPv4Address": "172.25.0.2/16",    "IPv6Address": ""   }  },  "Options": {},  "Labels": {} }

注意container2,自动分配到了IP地址。此时container1,仍然连接在默认的bridge网络。

4.启动第三个container,但是这是使用--ip 选项指定它的IP地址,

zane@zane-V:~$ docker run --network=isolated_nw --ip=172.25.3.3 -itd --name=container3 busybox

5.检查container3使用的是哪个网络:

 "Networks": {    "isolated_nw": {     "IPAMConfig": {      "IPv4Address": "172.25.3.3"     },     "Links": null,     "Aliases": [      "adf68dd9e09c"     ],     "NetworkID": "a8208641505d2d8fc37bf7cbd1027c01f0def461815786e076ef4ae65b7b2f9b",     "EndpointID": "71d5d272d056b6111a83f0843a10d1944f1648f34d5099258d5865d053a939b0",     "Gateway": "172.25.0.1",     "IPAddress": "172.25.3.3",     "IPPrefixLen": 16,     "IPv6Gateway": "",     "GlobalIPv6Address": "",     "GlobalIPv6PrefixLen": 0,     "MacAddress": "02:42:ac:19:03:03"    }   }  }

6.检查container2使用的是哪个网络:

"Networks": {    "isolated_nw": {     "Aliases": [      "e9bce535ae32"     ],     "EndpointID": "ef7244d32484407c3ec4aa30b7bdb0a6cbe3dbbfedc03e5c856ad20a08af172f",     "Gateway": "172.25.0.1",     "GlobalIPv6Address": "",     "GlobalIPv6PrefixLen": 0,     "IPAMConfig": {},     "IPAddress": "172.25.0.2",     "IPPrefixLen": 16,     "IPv6Gateway": "",     "Links": null,     "MacAddress": "02:42:ac:19:00:02",     "NetworkID": "a8208641505d2d8fc37bf7cbd1027c01f0def461815786e076ef4ae65b7b2f9b"    }   },

注意:container2 在两个网络中间,它加入了默认bridge网络,当你在创建它的时候,然后又连接它到了isolation_nw.

一个容器可以连接到多个网络中

7.使用docker attach 命令连接一个正在运行的容器,然后查看

zane@zane-V:~$ docker attach container2/ # ifconfig -aeth2  Link encap:Ethernet HWaddr 02:42:AC:19:00:02    inet addr:172.25.0.2 Bcast:0.0.0.0 Mask:255.255.0.0   inet6 addr: fe80::42:acff:fe19:2/64 Scope:Link   UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1   RX packets:86 errors:0 dropped:0 overruns:0 frame:0   TX packets:8 errors:0 dropped:0 overruns:0 carrier:0   collisions:0 txqueuelen:0   RX bytes:11780 (11.5 KiB) TX bytes:648 (648.0 B) eth3  Link encap:Ethernet HWaddr 02:42:AC:11:00:03    inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0   inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link   UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1   RX packets:23 errors:0 dropped:0 overruns:0 frame:0   TX packets:8 errors:0 dropped:0 overruns:0 carrier:0   collisions:0 txqueuelen:0   RX bytes:3809 (3.7 KiB) TX bytes:648 (648.0 B) lo  Link encap:Local Loopback    inet addr:127.0.0.1 Mask:255.0.0.0   inet6 addr: ::1/128 Scope:Host   UP LOOPBACK RUNNING MTU:65536 Metric:1   RX packets:0 errors:0 dropped:0 overruns:0 frame:0   TX packets:0 errors:0 dropped:0 overruns:0 carrier:0   collisions:0 txqueuelen:0   RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

8.可以通过容器名称来相互连接

/ # ping -w 4 container3PING container3 (172.25.3.3): 56 data bytes64 bytes from 172.25.3.3: seq=0 ttl=64 time=0.077 ms64 bytes from 172.25.3.3: seq=1 ttl=64 time=0.049 ms64 bytes from 172.25.3.3: seq=2 ttl=64 time=0.047 ms64 bytes from 172.25.3.3: seq=3 ttl=64 time=0.054 ms

虽然container1 和 container2 都在bridge网络中,但是他们是不支持 容器名称通信的。

zane@zane-V:~$ docker attach container2/ # ping container3PING container3 (172.25.3.3): 56 data bytes64 bytes from 172.25.3.3: seq=0 ttl=64 time=0.042 ms64 bytes from 172.25.3.3: seq=1 ttl=64 time=0.050 ms64 bytes from 172.25.3.3: seq=2 ttl=64 time=0.063 ms--- container3 ping statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max = 0.042/0.051/0.063 ms / # ping -w 4 container1ping: bad address 'container1' / # ping -w 4 172.17.0.2PING 172.17.0.2 (172.17.0.2): 56 data bytes64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.104 ms64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.052 ms64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.127 ms64 bytes from 172.17.0.2: seq=3 ttl=64 time=0.057 ms --- 172.17.0.2 ping statistics ---4 packets transmitted, 4 packets received, 0% packet lossround-trip min/avg/max = 0.052/0.085/0.127 ms

注意退出attach 时,使用ctr-p + ctr-q.
如果使用ctr-d 则会stop container.

zane@zane-V:~$ docker attach container3/ # ping -w 4 172.17.0.2PING 172.17.0.2 (172.17.0.2): 56 data bytes --- 172.17.0.2 ping statistics ---4 packets transmitted, 0 packets received, 100% packet loss

上面的实验我们知道,用户自定义的网络,是可以相互解析容器名的,也就是可以用容器名来相互同行。

•定义网络别名 •--link=CONTAINER-NAME:ALIAS

1.断开container2和isolated_nw的连接,然后

zane@zane-V:~$ docker network disconnect isolated_nw container2zane@zane-V:~$ docker network rm simple-network

•创建网络 •docker network create simple-network

•overlay网络条件 •进入一个键值存储

•支持overlay网络的docker选项 •--cluser-store

•指定子网络,网关,地址范围

•将容器添加到网络中 •docker network connect isolated_nw container2

•连接一个正在运行的容器 •docker attach

•attach 的退出 •ctr p + ctr q

•默认bridge网络不支持,容器名称通信,其他网络支持; •使用link 来支持默认网络的容器名称通信

•断开连接

•docker network disconnect isolated_nw container2

•删除网络

•docker network rm simple-network

•检测网络

•docker network inspect isolated_nw

关于"Docker网络命令的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

网络 容器 支持 名称 多个 子网 命令 地址 篇文章 通信 示例 分析 两个 引擎 更多 正在 存储 检查 运行 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 全国共筑网络安全防线 下列不是数据库管理系统为 服务器怎么创 网络安全 名词解释 数据库备份期间可以更新吗 推普周网络安全作文 dhcp服务器配置位置选择 阿里云服务器到期没续费多久作废 通用数据库字典对照表设计 28岁零基础学软件开发 汽车网络安全风险来源 云服务器如何部署企业网站 怎么利用服务器做成直链下载 停电后来电提示远端服务器无响应 网络安全攻击和破坏 杭州商派网络技术有限公司 抖音特效什么软件开发 美国网络安全保护专业 软件开发网络进度计划表 数据库字段加密的常用方法 下列不是数据库管理系统为 海南美寓互联网科技有限公司 数据库慕课单元答案中南大学 ark服务器怎么给管理员 怀旧服启动数据库错误 南昌银行软件开发中心招聘 人社金保入围软件开发商 安卓保存音乐到数据库 学好网络安全课程 对网络技术的看法
0