千家信息网

Docker网络命令的示例分析

发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章将为大家详细讲解有关Docker网络命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。•docker network create•docker
千家信息网最后更新 2024年11月17日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安全错误 数据库的锁怎样保障安全 成都软件开发人力成本 农业银行自助服务器怎么改密码 涉密网络安全保密防护包括 我的世界开服务器搞笑版 网络技术未来教育视频 安全教育公开课视频第六季网络安全 天刀端游云上城服务器什么时间开 服务器开局软件 怎么给服务器加防御 2018三级教程网络技术 服务器安全运维管理制度 河北废通网络技术有限公司 公司谁来管理数据库 家用电脑安装ftp服务器 哪个不是医学全文数据库 设置数据库选项的命令 固定列连接数据库查询 数据库的安全特性指 数据库如何还原被删除的表 杨浦区专业软件开发不二之选 成都思择网络技术有限公司 命令行界面怎么进入数据库 上海众应互联网络科技有限公司 快客软件开发 无线网络技术的未来发展 bim软件开发 ug无法打开数据库文件解决办法 红盟网络安全中心 如何使用软件开发 多级目录怎么建数据库表
0