只做外贸的公司网站,网站开发需求大吗,wordpress时间设置,网站费用属于哪个费用一#xff0c;network的概述
解决痛点#xff08;能干什么#xff1f;#xff09;#xff1a; #xff08;1#xff09;容器间的互联和通信以及端口映射 #xff08;2#xff09;容器IP变动时候#xff0c;可以通过服务名直接网络通信而不受到影响
二#xff0c;n…一network的概述
解决痛点能干什么 1容器间的互联和通信以及端口映射 2容器IP变动时候可以通过服务名直接网络通信而不受到影响
二network的基本用法
# 连接容器到网络
docker network connect 网络名 # 创建网络(使用统一网络的容器肯定可以ping通)
docker network create 网络名 # 断开网络
docker network disconnect 网络名# 查看网络具体信息
docker network inspect # 查看所有网络列表
docker network ls # 删除无用网络
docker network prune # 删除指定的网络
docker network rm 三network的五种网络模式
网络模式命令指定方式描述理解bridge–network bridge为每一个容器分配、设置 ip 并将容器连接到 docker0 虚拟网桥上虚拟网桥默认为该网络模式一人一个host–network host容器不会创建自己的网卡配置 ip 等而是使用宿主机的 ip 和端口多人一个container–network 容器名称或id新创建的容器不会创建自己的网卡和配置自己的ip而是和一个指定的容器共享ip、端口范围等自己没有用别人的none–network none容器有独立的Network namespace但并没有对其进行任何网络设置如网桥ip等有但是空的
1桥接模式—— bridge
为每一个容器分配、设置IP等并将容器连接到docker0的虚拟网桥。若没有特别申明则为默认自带一个IP以及网络设置。 Docker使用Linux桥接的方式在宿主机虚拟一个Docker容器网桥(docker0)。 Docker每启动一个容器时会根据Docker网桥的网段分配给容器一个ip地址。 同时Docker网桥是每个容器的默认网关。 同一宿主机内的容器都接入同一个网桥这样容器之间就能够通过容器的Container-IP直接通信。 docker run创建容器的时未指定network的容器默认的网络模式就是bridge使用的就是docker0。 在宿主机ifconfig就可以看到docker0和自己创建的network eth0eth1……代表网卡一网卡二……lo代表127.0.0.1(localhost)inet addr表示网卡的ip地址 网桥docker0会创建一对对等虚拟设备接口一个叫veth另一个叫eth0成对匹配。 整个宿主机的网桥模式都是docker0类似一个交换机有一堆接口每个接口叫veth 在本地主机和容器内分别创建一个虚拟接口并让他们彼此联通这样一对接口叫veth pair 每个容器实例内部也有一块网卡每个接口叫eth0 docker0上面的每个veth匹配某个容器实例内部的eth0两两配对。
[rootlocalhost ~]# docker network inspect bridge
[{Name: bridge, # 网络名称Id: 73992551d4270844e6aaab67e4d2030e24b5670c1502d34d29070d6a871c4a4e, # 网络IDCreated: 2024-01-05T16:06:44.58511263208:00, # 网络创建时间Scope: local, # 网络作用范围Driver: bridge, # 网络驱动EnableIPv6: false, # 网络是否支持ipv6IPAM: {Driver: default,Options: null,Config: [{Subnet: 172.17.0.0/16, # 网络网段Gateway: 172.17.0.1 # 网络ip}]},Internal: false,Attachable: false,Ingress: false,ConfigFrom: {Network: },ConfigOnly: false,Containers: {411008ba764f9209982cae4ddda07e12f851d88b00432e5b6819895fabcabfb6: {Name: ubt03, # 使用改网络的容器名称EndpointID: 1bdc19dd16fe96a8fe570dd89516f58e58ee54decd7d71f8df51dd483053d1f7,MacAddress: 02:42:ac:11:00:03, # 使用改网络的容器的MAC地址IPv4Address: 172.17.0.3/16, # 使用改网络的容器的IP地址IPv6Address: },75e8ed5431da1c1558a440eb26a62648e4ee2bdffa09b68adddcc486b69d8a35: {Name: ubt01, # 使用改网络的容器名称EndpointID: c9756c4ebe3b887fa82baec3c9019ccc4ad23aff6307760b7bab5e52f7dfd9fa,MacAddress: 02:42:ac:11:00:02, # 使用改网络的容器的MAC地址IPv4Address: 172.17.0.2/16, # 使用改网络的容器的IP地址IPv6Address: },7b738c8435c3973bf7d23d97bd5a91a9d67b53eb7bf545413935db33af95dc7c: {Name: ubt02, # 使用改网络的容器名称EndpointID: 966dfe49dd8c49c44e018bdc84d7a7366c1d1f0d53035a833c367dff62266084,MacAddress: 02:42:ac:11:00:04, # 使用改网络的容器的MAC地址IPv4Address: 172.17.0.4/16, # 使用改网络的容器的IP地址IPv6Address: }},Options: {com.docker.network.bridge.default_bridge: true,com.docker.network.bridge.enable_icc: true,com.docker.network.bridge.enable_ip_masquerade: true,com.docker.network.bridge.host_binding_ipv4: 0.0.0.0,com.docker.network.bridge.name: docker0, # docker0 默认就是bridge网络模式com.docker.network.driver.mtu: 1500},Labels: {}}
]2主机模式—— host
容器不会虚拟出自己的网卡、IP等而是使用宿主机的IP和端口。 注意在创建的时候将不在指定 -p 8083:8080,无意义运行时候会警告但是不报错。因为该容器和主机ip和端口同步。
[rootlocalhost ~]# docker network inspect host
[{Name: host, # 网络名称 Id: 3aa406c8eaa186507ced3f3ff72710d350b363b5993159449de623188dd7d5e7,Created: 2023-12-15T14:18:11.01865782608:00, # 网络创建时间Scope: local, # 网络作用范围Driver: host, # 网络驱动EnableIPv6: false,IPAM: {Driver: default,Options: null,Config: []},Internal: false,Attachable: false,Ingress: false,ConfigFrom: {Network: },ConfigOnly: false,Containers: {18720ac44b136684644e17d8deea38b74db76d8ef0f1fc342340180148377310: {Name: redis-node-3, # 使用该网络的容器名称EndpointID: 3a18044ac33afd2da1b3cadd1dd28735c278119a1b1b5f1def96f206b84d8efb, MacAddress: ,IPv4Address: ,IPv6Address: },2b2987704c6da591e321fe75f9a1518f4e4488285f0c3a20d53d32a8cf9d24da: {Name: redis-node-2, # 使用该网络的容器名称EndpointID: 825830dd9adf559a9d99e0e8dad1fd3a4ef14b137e322f2c78d9b090ad0d9390,MacAddress: ,IPv4Address: ,IPv6Address: },e2304c8acbd676f76fcde5faf0f26555bedf61148ab858c22bc32c2ab9ff4a9b: {Name: redis-node-1, # 使用该网络的容器名称EndpointID: a255555c3c7f7dffcf2c7e26a3dd752a43b826a8ccebb9f41f65bf400cb5e56d,MacAddress: ,IPv4Address: ,IPv6Address: }},Options: {},Labels: {}}
]3容器模式—— container
新创建的容器不会创建自己的网卡没有自己的IP也不会进行相应的配置。而是和一个指定的容器共享IP端口范围等。 说明当192.168.20.2容器停掉后192.168.20.3的网络也会同时停掉
--network container:共享的容器名/ID注意 在测试的时候由于tomcat容器的端口不可共用所以在测试的时候还是用Alpine(简单、小巧、安全)小插件来测试
# 创建alpine1
$ docker run -it --name alpine1 alpine /bin/sh# 创建alpine2通过--network container:alpine1共用网络
$ docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh4none模式—— none
容器有自己独立的Network namespace但是没有进行任何的相关配置。即禁用网络功能只有lo标识(就是127.0.0.1表示本地回环)
在none模式下并不为Docker容器进行任何网络配置。 也就是说这个Docker容器没有网卡、IP、路由等信息只有一个lo。 需要我们自己为Docker容器添加网卡、配置IP等。
[rootlocalhost ~]# docker network inspect none
[{Name: none, # 网络名称Id: 9939d4b66231cc6e90ffca805518059ab077e5b04d4933a4b69f279e91f314dd, # 网络idCreated: 2023-12-15T14:18:10.95626629708:00, # 网络创建时间Scope: local, # 网络作用范围Driver: null, # 网络驱动EnableIPv6: false,IPAM: {Driver: default,Options: null,Config: []},Internal: false,Attachable: false,Ingress: false,ConfigFrom: {Network: },ConfigOnly: false,Containers: {},Options: {},Labels: {}}
]5自定义网络
为使得众多的容器进行分门别类方便管理的情况下而且通过服务名来ping通所以采用自定义网络进行管理 解决痛点可以通过服务名ping通。
#创建新的网络默认为bridge模式
docker network create new_net# 新创建两个容器tomcat81和tomcat82并调用新建的自定义网络
docker run -d -p 8081:8080 --network new_net --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network new_net --name tomcat82 billygoo/tomcat8-jdk8tomcat81和tomcat82 是在同一个网段通过ip来ping肯定能够通并且通过服务器也可以ping通。
总结自定义网络本身就维护好了主机名和ip的对应关系 ip和域名都能通)