docke自定义网络之容器互联的示例分析
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要介绍docke自定义网络之容器互联的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!-link# 清除所有容器$root@VM-8-11-ubuntu:~#
千家信息网最后更新 2025年02月03日docke自定义网络之容器互联的示例分析
这篇文章主要介绍docke自定义网络之容器互联的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
-link
# 清除所有容器$root@VM-8-11-ubuntu:~# docker stop $(docker ps -aq) && docker rm $(docker ps -aq)88f8f241ca30765ed1889bfa$root@VM-8-11-ubuntu:~# docker run -it --name=mybusy02 -d busybox82aff31e56f3913b3fa883a08ec95960eff88fc9977360a67264c0d53180844b$root@VM-8-11-ubuntu:~# docker run -it --name mybusy --link mybusy02:mybusy-net -d busyboxb77e9762314f868518f799d3c572dec0b2ce13a684de072fb9f9e925135f6459$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy-netPING mybusy-net (172.17.0.2): 56 data bytes64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.131 ms64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.069 ms64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.069 ms$root@VM-8-11-ubuntu:~# docker exec -it mybusy cat /etc/hosts127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters172.17.0.2 mybusy-net 09a4b97fc09d mybusy02 # 我们发现在hosts文件中加入了mybusy02172.17.0.3 c73be07d21fb
我们发现是互联了,但是如果mybusy02 想ping 通 mybusy 还需要一个-link。所以就很麻烦,而且官方也推荐我们不要使用 --link 这个参数了。
docker 0 不支持容器名访问接下来我们就到了今天的重头戏,自定义网络了。
自定义网络
# 主要涉及到的命令$root@VM-8-11-ubuntu:~# docker network --helpUsage: docker network COMMANDManage networksCommands: connect Connect a container to a network create Create a network disconnect Disconnect a container from a network inspect Display detailed information on one or more networks ls List networks prune Remove all unused networks rm Remove one or more networksRun 'docker network COMMAND --help' for more information on a command.# 这是默认的网络方式 brudge 就是docker 0的网桥$root@VM-8-11-ubuntu:~# docker network lsNETWORK ID NAME DRIVER SCOPEcf05ea05d3bd bridge bridge local0ab28e475dc6 host host locale4c628cc77db none null local
我们来使用create来创建自己的网桥网络。基础
# --driver 设置network类型 --subnet 设置子网 /16 = 255*255 个ip 减去0.0 和 255.255 约等于65535$root@VM-8-11-ubuntu:~# docker network create --driver=bridge --subnet=192.168.0.0/16 my-net1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970root@VM-8-11-ubuntu:~# docker network lsNETWORK ID NAME DRIVER SCOPEcf05ea05d3bd bridge bridge local0ab28e475dc6 host host local1b668a5439b2 my-net bridge locale4c628cc77db none null local# 查看网络信息$root@VM-8-11-ubuntu:~# docker network inspect my-net[ { "Name": "my-net", "Id": "1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970", "Created": "2021-12-01T09:47:21.410882291+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.0.0/16" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": {}, "Options": {}, "Labels": {} }]
上面我们介绍了创建网络的方法以及查看的方法 接下来看看使用的方法
# 创建mybusy 容器设置 my-net网络$root@VM-8-11-ubuntu:~# docker run -it --name mybusy --net=my-net -d busybox180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272# 创建mybusy02 容器设置 my-net网络 $root@VM-8-11-ubuntu:~# docker run -it --name mybusy02 --net=my-net -d busybox3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7# 在容器mybusy ping mybusy02 通了$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy02PING mybusy02 (192.168.0.3): 56 data bytes64 bytes from 192.168.0.3: seq=0 ttl=64 time=0.110 ms64 bytes from 192.168.0.3: seq=1 ttl=64 time=0.070 ms
这时我们发现 他们两互相ping通了,这就很完美了。再来看看下面的 my-net 的网络配置
root@VM-8-11-ubuntu:~# docker network inspect my-net [ { "Name": "my-net", "Id": "1b668a5439b207d2080d95bffe829139cfa2456d691c8019a245e7f9d5a56970", "Created": "2021-12-01T09:47:21.410882291+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.0.0/16" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { # 这时我们发现 这两个容器已经加入到这个网络中了 "180fbc8b04627762a896d8a85d8cb67063c01a0f3ad8a11352ab4695b022c272": { "Name": "mybusy", "EndpointID": "12929182af47e619e3405cab9981ea1671a2bc31f77d3aa589ebcf2c912c12bc", "MacAddress": "02:42:c0:a8:00:02", "IPv4Address": "192.168.0.2/16", "IPv6Address": "" }, "3c08d592537a9593c960c9664b4724521658f26be7b658a6483e6fbfe30b58a7": { "Name": "mybusy02", "EndpointID": "61b08372535d751cee726fc01d4e300390e2a090dba20f1d21ba96385a7a621e", "MacAddress": "02:42:c0:a8:00:03", "IPv4Address": "192.168.0.3/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} }]
提问
在不同网络的配置下的容器可以互联吗?
答案是可以的。我们可以使用 docker network connect 指令,以下为操作步骤
# 首先查看当前存在同一个网络中mybusy mybusy02 两个容器$root@VM-8-11-ubuntu:~# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3c08d592537a busybox "sh" 8 minutes ago Up 8 minutes mybusy02180fbc8b0462 busybox "sh" 8 minutes ago Up 8 minutes mybusy# 创建一个在默认网络中的 mybusy03$root@VM-8-11-ubuntu:~# docker run -it --name mybusy03 -d busyboxa95b57c96f400ed44efffcc938bccce15830fa1ab5b55716261e4588c14429cb# 查看当前的容器$root@VM-8-11-ubuntu:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa95b57c96f40 busybox "sh" 21 seconds ago Up 21 seconds mybusy033c08d592537a busybox "sh" 8 minutes ago Up 8 minutes mybusy02180fbc8b0462 busybox "sh" 9 minutes ago Up 9 minutes mybusy# 尝试从 mybusy ping mybusy03 发现是ping 不通的 因为不在同一网端中$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03ping: bad address 'mybusy03'# 这时我们查看docker network connect --help 命令查看$root@VM-8-11-ubuntu:~# docker network connect --helpUsage: docker network connect [OPTIONS] NETWORK CONTAINERConnect a container to a networkOptions: --alias strings Add network-scoped alias for the container --driver-opt strings driver options for the network --ip string IPv4 address (e.g., 172.30.100.104) --ip6 string IPv6 address (e.g., 2001:db8::33) --link list Add link to another container --link-local-ip strings Add a link-local address for the container# 将mybusy03 加入到 my-net 网络中$root@VM-8-11-ubuntu:~# docker network connect my-net mybusy03# 这时我们再 ping 发现通了。是不是很神奇$root@VM-8-11-ubuntu:~# docker exec -it mybusy ping mybusy03PING mybusy03 (192.168.0.4): 56 data bytes64 bytes from 192.168.0.4: seq=0 ttl=64 time=0.197 ms64 bytes from 192.168.0.4: seq=1 ttl=64 time=0.087 ms
这时我们查看网络发现 mybusy03 已经加入到 my-net中去了。所以就可以ping 通了。
以上是"docke自定义网络之容器互联的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
网络
容器
互联
方法
示例
分析
接下来
两个
内容
命令
篇文章
网桥
配置
不同
神奇
价值
信息
兴趣
参数
基础
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
工业网络技术与电脑有关吗
微商清人软件开发
威胁服务器的安全因素
请输入接收邮件服务器
雨花台区国际软件开发创新服务
周梦良 网络安全
网络安全参赛画
软件开发人员男女比例
半导体设备软件开发
sec服务器
世界ol官网数据库
街头激战国际服服务器
数据库默认的搜索路径
福建加工软件开发技术规范
云服务器防护软件
更改oracle数据库列宽
网络安全风险类型佰
c能进行bs架构软件开发吗
我是市长老是无法连接服务器
雪琪专注于互联网软件开发
收件服务器的用户名和密码不正确
软件开发企业的注册
pl sql与数据库
江苏工业软件开发哪家实惠
计算机网络技术在哪里上班
ftp服务器快速登录
拆分盘直销软件开发
net软件开发视频
怎么知道一台服务器是否有虚拟机
网页的动态内容能在服务器生成吗