容器间通信之网络使用
1.容器间通信
说明:容器之间通过网络进行相互通信
官方说明:
当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。 同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1,掩码为 255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。 当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头(例如 vethAQI2QT)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
2.网络总结
1)、默认docker在创建容器时将所有容器都连接到docker0网桥上,默认在docker0网桥的容器都可以使用容器内ip地址进行通信。
2) 、 默认docker在创建容器时将所有容器都连接到docker0网桥上,默认在docker0网桥的容器都可以使用容器名字作为容器ip地址进行通信。
注意事项:使用容器名称,必须自定义网桥,不能使用默认docker0。
实际生产环境中,一般都不会用docker0,通过自定义网桥。一般一个项目一组容器一个网桥。
3.自定义网桥实现网桥中的一组容器通信
查看容器网络类型的命令: docker network ls
1 2 3 4 5 | NETWORK ID NAME DRIVER SCOPE c4cf0ba85d6e bridge bridge local 24769111bbeb compose-nginx_qwf bridge local 5cf65390fed0 host host local 47fdd9ea183e none null local |
bridge模式:默认方式
1)创建自定义桥
docker network --help
[root@VM-4-16-centos ~]# docker network --help Usage: docker network COMMAND Manage networks Commands: 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 networks
通过:docker network create -d bridge(默认) 网络名称 创建网桥
docker network create -d bridge class-web 或者 docekr network create class-web
查看有哪些网络:
docker network ls
NETWORK ID NAME DRIVER SCOPE c4cf0ba85d6e bridge bridge local afb78ee31c62 class-web bridge local 24769111bbeb compose-nginx_qwf bridge local 5cf65390fed0 host host local 47fdd9ea183e none null local
查看某一个网络细节:
docker network inspect 网络id/网络名
删除某一个网络:
docker network rm 网络id/网络名 #
docker network prune 网络id/网络名 # 删除所有未被用到的网络名
运行多个容器在指定网络中
a.启动时明确指定容器使用哪个网络
docker run -d --network 网络名称
b.启动后容器加入到某个网络
docker network connect 网络名 容器名称/容器id
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!