[Docker]七.配置 Docker 网络

一.Docker0 网络

1.多个容器之间如何通信,是否可以直接连接

默认启动的所有容器都会加入到docker0这个网络中,所有各个容器件是可以直接通信的

先看看网卡信息: 

启动几个容器来演示一下:

#启动mycentos这个容器
[root@localhost zph]# docker run -it -d --name mycentos d757f6342cfa /bin/bash
7845d3930d4a6ee995f11c33e9dae2b688032b2d5c6a655148104ab4f33cd2c5
[root@localhost zph]# 
[root@localhost zph]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS         PORTS     NAMES
7845d3930d4a   d757f6342cfa   "/bin/bash"   11 seconds ago   Up 3 seconds             mycentos

 

 

说明了每次启动一个容器时,都会增加一个网卡信息,下面来测试一下几个容之间可以相互通信不? 

分别查看 3 块网卡的 IP 信息 

[root@localhost zph]# docker exec -it mycentos ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 45  bytes 5710 (5.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost zph]# docker exec -it mycentos2 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)RX packets 21  bytes 2436 (2.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost zph]# docker exec -it mycentos3 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.4  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:04  txqueuelen 0  (Ethernet)RX packets 20  bytes 2366 (2.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 发现:

        mycentos 的IP地址为:172.17.0.2 

        mycentos2 的IP地址为:172.17.0.3 

        mycentos3 的IP地址为:172.17.0.4 

进入mycentos容器,ping一下mycentos2,看看两个容器是否可以通信

ping得通,说明几个容器之间可以相互通信 

然后,退出容器,在主机上ping一下容器,看看是否ping通

ping得通,说明同一台主机上面的容器和主机之间是可以互相通信的
 
结论:
         默认情况同一台主机上面的容器是可以互相通信的,默认情况同一台主机上面的容器
和主机之间是可以互相通信的

2.通信原理

每启动一个 Docker 容器, Docker 就会给 Docker 容器分配一个 ip ,只要安装了 Docker ,
就会有一个网卡 Docker0 , Docker0 使用的是桥接模式,使用的技术是 veth-pair 技术

#启动mycentos这个容器
[root@localhost zph]# docker run -it -d --name mycentos d757f6342cfa /bin/bash
7845d3930d4a6ee995f11c33e9dae2b688032b2d5c6a655148104ab4f33cd2c5
[root@localhost zph]# 
[root@localhost zph]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS         PORTS     NAMES
7845d3930d4a   d757f6342cfa   "/bin/bash"   11 seconds ago   Up 3 seconds             mycentos

 

 

说明了每次启动一个容器时,都会增加一个网卡信息

 

 

3.使用默认网络的问题 

(1).没法使用计算机主机名实现通信

(2).没法实现网络隔离

当有几个容器:nignx, mysql等时,启动容器后,都加入了docker0网络,没法实现网络隔离

那么,该怎么处理呢,就需要进行自定义网络设置了,可以通过docker network来实现

二.Docker Network 详解

1.关于 docker network 命令

(1).docker network ls 查看当前计算机上的网络

(2).docker network inspect 查看网络详情

[root@localhost zph]# docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
2d19a8dfb493   bridge               bridge    local
fe75119d5a77   dockerlnmp_default   bridge    local
9a2fe27fdd30   dockerlnmp_server    bridge    local
fc03b9653496   host                 host      local
b8b81a5aa87c   none                 null      local
[root@localhost zph]# docker network inspect 2d19a8dfb493
[{"Name": "bridge","Id": "2d19a8dfb4930b4581ec74f9b6c07878a5cb85378c6841c0ea3e0eabdc3d8bc3","Created": "2023-11-18T18:36:58.528816645-08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16","Gateway": "172.17.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {"005f0e3b21e468d2526f4b444b82b9459599d64db465cf029cc7b1794351cd64": {"Name": "mycentos2","EndpointID": "e1935af85b74f19cd8d6b078c1535b09d6e509ff28da355b5473ca116643c8b2","MacAddress": "02:42:ac:11:00:03","IPv4Address": "172.17.0.3/16","IPv6Address": ""},"7845d3930d4a6ee995f11c33e9dae2b688032b2d5c6a655148104ab4f33cd2c5": {"Name": "mycentos","EndpointID": "7be4ae43f9e0881e63e58878d56507ad9235eb542212acf2874e35aa698e4d63","MacAddress": "02:42:ac:11:00:02","IPv4Address": "172.17.0.2/16","IPv6Address": ""},"8f7731eea4d11d1829a1d963ba539bcab876a085bad442014a9727c519a455f2": {"Name": "mycentos3","EndpointID": "25fc5c8d55d4ec52b786f78ddbbfc66551c372e6043466f04c98b14c1f695e6e","MacAddress": "02:42:ac:11:00:04","IPv4Address": "172.17.0.4/16","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","com.docker.network.driver.mtu": "1500"},"Labels": {}}
]

(3).docker network rm 删除网络 

#查看网络
[root@localhost zph]# docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
2d19a8dfb493   bridge               bridge    local
fe75119d5a77   dockerlnmp_default   bridge    local
9a2fe27fdd30   dockerlnmp_server    bridge    local
fc03b9653496   host                 host      local
f336219e4dbb   mysql                bridge    local#删除网络
[root@localhost zph]# docker network rm mysql
mysql#查看是否已删除
[root@localhost zph]# docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
2d19a8dfb493   bridge               bridge    local
fe75119d5a77   dockerlnmp_default   bridge    local
9a2fe27fdd30   dockerlnmp_server    bridge    local
fc03b9653496   host                 host      local

(4).docker network create 创建网络以及启动容器指定网络

通过docker network create 创建网络以及启动容器指定网络(可以创建网络的类型),这样当启动容器后就可以把容器加入到自己的网络了,这样就可以解决上面使用默认网络的问题:

  • 没法实现网络隔离
  • 没法使用计算机主机名实现通信
网络的类型分类如下
Docker 网络模式
配置
说明
host 模式
--net=host
容器和宿主机共享 Network namespace,使用同一个ip
container 模式
--net=container:NAME  or  ID
容器和另外一个容器共享 Network namespace,
kubernetes 中的 pod 就是多个容器共享一个
Network namespace
none 模式
--net=none
容器有独立的 Network namespace ,但并没有对其进行任何网 络设置 ,如分配 evth pair 和网桥连
接,配置 IP 等
bridge 模式
--net=bridge
默认为该模式
host 模式

如果启动容器的时候使用 host 模式,那么这个容器 将不会获得一个独立的 Network
Namespace ,而是 和宿主机共用一个 Network Namespace 。容器将不会虚拟出自己的网卡, 配置自己的 IP 等,而是 使用宿主机的 IP 和端口, 但是,容器的其他方面,如文件系统、进 程列表等还是和宿主机隔离的。 使用 host 模式的容器可以直接使用宿主机的 IP 地址与外界通信,容器内部的服务端口也可 以使用宿主机的端口,不需要进行 NAT , host 最大的优势就是网络性能比较好,但是 docker host 上已经使用的端口就不能再用了, 网络的隔离性不好

container 模式

这个模式指定新创建的容器和 已经存在的一个容器 共享一个 Network Namespace ,而不是和
宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP ,而是和一个指定的容器共享 IP 、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的,两个容器的进程可以通过 lo 网卡设备通信
 none 模式

使用 none 模式, Docker 容器拥有自己的 Network Namespace ,但是,并不为 Docker 容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、 IP 、路由等信息。需要自己为 Docker 容器添加网卡、配置 IP 等。 这种网络模式下容器只有 lo 回环网络,没有其他网卡。 none 模式可以在容器创建时通过 --network=none 来指定。 这种类型的网络没有办法联网 ,封闭的网络能很好的保证容器的安全性

bridge 模式

当 Docker 进程启动时,会在主机上创建一个名为 docker0 的 虚拟网桥 ,此主机上启动 Docker容器会连接到这个虚拟网桥上,虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中,从docker0 子网中 分配一个 IP 给容器使用,并设置 docker0 的 IP 地址为容器的默认网关。在主机上创建一对 虚拟网卡 veth pair 设备,Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为 eth0(容器的网卡),另一端放在主机中,以 vethxxx 这样类似的名字命名,并将这个网络设备加入到 docker0 网中。可以通过 brctl show 命令查看,bridge 模式是 docker 的默认网络模式,不写--net 参数,就是 bridge 模式。使用 docker run -p时, docker 实际是在 iptables 做了 DNAT 规则,实现端口转发功能,可以使用 iptables -t nat -vnL 查看

 docker network create基本语法

--driver 配置网络连接方式,一般是bridge

--gateway: 配置网关

--subnet: 配置子网,局域网的网段

建议配置子网范围的时候范围不要太大

创建一个docker1网络 
--driver bridge
        配置网络类型 bridge 桥接
--subnet 192.168.1.0/24
        配置子网 建议每个网络的范围尽量小
--gateway 192.168.1.1
        配置网关
docker network create --driver bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 docker1
#创建一个docker网络
[root@localhost zph]# docker network create --driver bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 docker1
c0fbaf2266c86f504d02a9324c45fb49c1909f908631d6a2cd5b1bb04dc981a8
#创建成功
[root@localhost zph]# docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
2d19a8dfb493   bridge               bridge    local
c0fbaf2266c8   docker1              bridge    local
fe75119d5a77   dockerlnmp_default   bridge    local
9a2fe27fdd30   dockerlnmp_server    bridge    local
fc03b9653496   host                 host      local
创建一个docker2网络 
--driver bridge
        配置网络类型 bridge 桥接
--subnet 192.168.2.0/24
        配置子网 建议每个网络的范围尽量小
--gateway 192.168.2.1
        配置网关
docker network create --driver bridge --subnet 192.168.2.0/24 --gateway 192.168.2.1 docker2

#创建一个docker2网络
[root@localhost zph]# docker network create --driver bridge --subnet 192.168.2.0/24 --gateway 192.168.2.1 docker2
2d9c2d29e6d308733bf266978914a6b43cbab575a2d99d0928908bc09a6d4f40
#创建成功
[root@localhost zph]# docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
2d19a8dfb493   bridge               bridge    local
c0fbaf2266c8   docker1              bridge    local
2d9c2d29e6d3   docker2              bridge    local
fe75119d5a77   dockerlnmp_default   bridge    local
9a2fe27fdd30   dockerlnmp_server    bridge    local
fc03b9653496   host                 host      local

可以通过docker inspect docker1/docker2 查看相关配置:

[root@localhost zph]# docker inspect docker1
[{"Name": "docker1","Id": "c0fbaf2266c86f504d02a9324c45fb49c1909f908631d6a2cd5b1bb04dc981a8","Created": "2023-11-20T18:19:18.375826061-08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.1.0/24","Gateway": "192.168.1.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
]
[root@localhost zph]# docker inspect docker2
[{"Name": "docker2","Id": "2d9c2d29e6d308733bf266978914a6b43cbab575a2d99d0928908bc09a6d4f40","Created": "2023-11-20T18:21:29.173750083-08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.2.0/24","Gateway": "192.168.2.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
]

(5).启动容器指定网络

启动容器的时候可以加上 --net 参数可以指定启动容器的时候使用的网络,如果不加表示默认使用 docker0 网络
--net bridge 表示使用 docker0 网络
#查看目前启动的容器
[root@localhost zph]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED        STATUS        PORTS     NAMES
8f7731eea4d1   d757f6342cfa   "/bin/bash"   42 hours ago   Up 42 hours             mycentos3
005f0e3b21e4   d757f6342cfa   "/bin/bash"   42 hours ago   Up 42 hours             mycentos2
7845d3930d4a   d757f6342cfa   "/bin/bash"   42 hours ago   Up 42 hours             mycentos#查看对应的镜像
[root@localhost zph]# docker images | grep d757f6342cfa
mycentos                         v1                  d757f6342cfa   2 days ago      434MB#启动一个容器mycentos4 ,并指定docker1为其网络
[root@localhost zph]# docker run -it -d --name mycentos4 --net docker1 d757f6342cfa /bin/bash
0ef1ea47894936e011c3efbafd5dbc49df14e5285f836a08345a48eb800349e6#启动一个容器mycentos5,并指定docker1为其网络
[root@localhost zph]# docker run -it -d --name mycentos5 --net docker1 d757f6342cfa /bin/bash
a1a6d02bb8ba6ce5bfdc96b32e7d16d8e76ce9960656dab3a2281bf46fa86793#启动一个容器mycentos6,并指定docker2为其网络
[root@localhost zph]# docker run -it -d --name mycentos6 --net docker2 d757f6342cfa /bin/bash
a6ed25db1e1e221eb510ad80646674d775313977360dda6070f24b320230e6fd#启动一个容器mycentos7,并指定docker2为其网络
^[[A[root@localhost zpdocker run -it -d --name mycentos7 --net docker2 d757f6342cfa /bin/bash
63aaf78d8a855dd6700b1e7c91b206103155871b845f6de863eff6907896d5cc#查看启动的容器列表
[root@localhost zph]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED              STATUS              PORTS     NAMES
63aaf78d8a85   d757f6342cfa   "/bin/bash"   7 seconds ago        Up 4 seconds                  mycentos7
a6ed25db1e1e   d757f6342cfa   "/bin/bash"   18 seconds ago       Up 16 seconds                 mycentos6
a1a6d02bb8ba   d757f6342cfa   "/bin/bash"   27 seconds ago       Up 24 seconds                 mycentos5
0ef1ea478949   d757f6342cfa   "/bin/bash"   About a minute ago   Up About a minute             mycentos4
8f7731eea4d1   d757f6342cfa   "/bin/bash"   42 hours ago         Up 42 hours                   mycentos3
005f0e3b21e4   d757f6342cfa   "/bin/bash"   42 hours ago         Up 42 hours                   mycentos2
7845d3930d4a   d757f6342cfa   "/bin/bash"   42 hours ago         Up 42 hours                   mycentos#查看容器mycentos4配置信息:发现网络在docker1中,子网范围在192.168.1.0/24范围中
[root@localhost zph]# docker inspect mycentos4
[..."Networks": {"docker1": {"IPAMConfig": null,"Links": null,"Aliases": ["0ef1ea478949"],"NetworkID": "c0fbaf2266c86f504d02a9324c45fb49c1909f908631d6a2cd5b1bb04dc981a8","EndpointID": "da176af0d1630cd9ab8c0bb78e6a3974933686f66f9c334c83b0b622f0b1d3fb","Gateway": "192.168.1.1","IPAddress": "192.168.1.2","IPPrefixLen": 24,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:c0:a8:01:02","DriverOpts": null}}}}
]#查看容器mycentos5配置信息:发现网络在docker1中,子网范围在192.168.1.0/24范围中
[root@localhost zph]# docker inspect mycentos5
[..."HostConfig": {"Binds": null,"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "docker1","PortBindings": {},."NetworkSettings": {"Networks": {"docker1": {"IPAMConfig": null,"Links": null,"Aliases": ["a1a6d02bb8ba"],"NetworkID": "c0fbaf2266c86f504d02a9324c45fb49c1909f908631d6a2cd5b1bb04dc981a8","EndpointID": "6611729f48e83c6c5b6829dd4cdb6437aca1aa0796679b9c6815769fac48a5cc","Gateway": "192.168.1.1","IPAddress": "192.168.1.3","IPPrefixLen": 24,"}}}}
]#查看容器mycentos6配置信息:发现网络在docker2中,子网范围在192.168.2.0/24范围中
[root@localhost zph]# docker inspect mycentos6
[..."NetworkMode": "docker2","PortBindings": {},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"Networks": {"docker2": {"IPAMConfig": null,"Links": null,"Aliases": ["a6ed25db1e1e"],"NetworkID": "2d9c2d29e6d308733bf266978914a6b43cbab575a2d99d0928908bc09a6d4f40","EndpointID": "7973882a048f4d78a8d3f72e93b8f8a7ee914841689f8d342116a8be9a1ffb5d","Gateway": "192.168.2.1","IPAddress": "192.168.2.2","IPPrefixLen": 24,...}}}}
]#查看容器mycentos7配置信息:发现网络在docker2中,子网范围在192.168.2.0/24范围中
[root@localhost zph]# docker inspect mycentos7
[..."Config": {"NetworkSettings": {..."Networks": {"docker2": {"IPAMConfig": null,"Links": null,"Aliases": ["63aaf78d8a85"],"NetworkID": "2d9c2d29e6d308733bf266978914a6b43cbab575a2d99d0928908bc09a6d4f40","EndpointID": "d980fd516be8c6260647579dcad6e5dc9376e4090b7560ab206b04a3ce3ba5a0","Gateway": "192.168.2.1","IPAddress": "192.168.2.3","IPPrefixLen": 24,...}}}}
]#查看docker1网络:发现mycentos4,mycentos5容器在网络中
[root@localhost zph]# docker inspect docker1
[{"Name": "docker1","Id": "c0fbaf2266c86f504d02a9324c45fb49c1909f908631d6a2cd5b1bb04dc981a8","Created": "2023-11-20T18:19:18.375826061-08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.1.0/24","Gateway": "192.168.1.1"}]},..."ConfigOnly": false,"Containers": {"0ef1ea47894936e011c3efbafd5dbc49df14e5285f836a08345a48eb800349e6": {"Name": "mycentos4","EndpointID": "da176af0d1630cd9ab8c0bb78e6a3974933686f66f9c334c83b0b622f0b1d3fb","MacAddress": "02:42:c0:a8:01:02","IPv4Address": "192.168.1.2/24","IPv6Address": ""},"a1a6d02bb8ba6ce5bfdc96b32e7d16d8e76ce9960656dab3a2281bf46fa86793": {"Name": "mycentos5","EndpointID": "6611729f48e83c6c5b6829dd4cdb6437aca1aa0796679b9c6815769fac48a5cc","MacAddress": "02:42:c0:a8:01:03","IPv4Address": "192.168.1.3/24","IPv6Address": ""}},"Options": {},"Labels": {}}
]#查看docker2网络:发现mycentos6,mycentos7容器在网络中
[root@localhost zph]# docker inspect docker2
[{"Name": "docker2","Id": "2d9c2d29e6d308733bf266978914a6b43cbab575a2d99d0928908bc09a6d4f40","Created": "2023-11-20T18:21:29.173750083-08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.2.0/24","Gateway": "192.168.2.1"}]},..."Containers": {"63aaf78d8a855dd6700b1e7c91b206103155871b845f6de863eff6907896d5cc": {"Name": "mycentos7","EndpointID": "d980fd516be8c6260647579dcad6e5dc9376e4090b7560ab206b04a3ce3ba5a0","MacAddress": "02:42:c0:a8:02:03","IPv4Address": "192.168.2.3/24","IPv6Address": ""},"a6ed25db1e1e221eb510ad80646674d775313977360dda6070f24b320230e6fd": {"Name": "mycentos6","EndpointID": "7973882a048f4d78a8d3f72e93b8f8a7ee914841689f8d342116a8be9a1ffb5d","MacAddress": "02:42:c0:a8:02:02","IPv4Address": "192.168.2.2/24","IPv6Address": ""}},"Options": {},"Labels": {}}
]

 使用主机名称可以 ping 通

这样就把 centos4 和 centos5 ,centos6  和 centos7 分别加入了自定义的dockert1,docker2  网络,这样的话 centos4和 centos5是互通的,centos6和 centos7 是互通的,但是docker1,docker2 网络  docker0 网络默认是不互通的

 (6).docker network connect 实现不同网络之间的连通

如上图,如果想my centos2  可以 访问docker1 里面的 centos4 和 centos5 ,这个时候
就需要使用 docker network connect来实现

#查看mycentos2 ip地址: 发现是 172.17.0.3
[root@localhost zph]# docker exec -it mycentos2 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)RX packets 68  bytes 5754 (5.6 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6  bytes 476 (476.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0#查看mycentos4 ip地址: 发现是 192.168.1.2  
[root@localhost zph]# docker exec -it mycentos4 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255ether 02:42:c0:a8:01:02  txqueuelen 0  (Ethernet)RX packets 45  bytes 5699 (5.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

说明mycentos2和mycentos4直接是不能通信的,因为他们不在同一个网段,如果想他们通信,就需要把mycentos2加入到mycentos4的网段中才得行,这样就需要使用docker network connect语句来实现了,语法:

#网络名:可以通过docker network ls查看
docker network connect 网络名 容器名/容器ID

#把mycentos2容器加入docker1网络
[root@localhost zph]# docker network connect docker1 mycentos2#查看dokcer1网络,发现容器中已经加入了mycentos2了
[root@localhost zph]# docker network inspect docker1
[{"Name": "docker1","Id": "c0fbaf2266c86f504d02a9324c45fb49c1909f908631d6a2cd5b1bb04dc981a8","Created": "2023-11-20T18:19:18.375826061-08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.1.0/24","Gateway": "192.168.1.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {"005f0e3b21e468d2526f4b444b82b9459599d64db465cf029cc7b1794351cd64": {"Name": "mycentos2","EndpointID": "144b2d2989d1aded19d04229865aa9beacc72e95cae36acc30fd719e578c0b1d","MacAddress": "02:42:c0:a8:01:04","IPv4Address": "192.168.1.4/24","IPv6Address": ""},"0ef1ea47894936e011c3efbafd5dbc49df14e5285f836a08345a48eb800349e6": {"Name": "mycentos4","EndpointID": "da176af0d1630cd9ab8c0bb78e6a3974933686f66f9c334c83b0b622f0b1d3fb","MacAddress": "02:42:c0:a8:01:02","IPv4Address": "192.168.1.2/24","IPv6Address": ""},"a1a6d02bb8ba6ce5bfdc96b32e7d16d8e76ce9960656dab3a2281bf46fa86793": {"Name": "mycentos5","EndpointID": "6611729f48e83c6c5b6829dd4cdb6437aca1aa0796679b9c6815769fac48a5cc","MacAddress": "02:42:c0:a8:01:03","IPv4Address": "192.168.1.3/24","IPv6Address": ""}},"Options": {},"Labels": {}}
]#mycentos4 ping mycentos2,可以ping通
[root@localhost zph]# docker exec -it mycentos4 ping mycentos2
PING mycentos2 (192.168.1.4) 56(84) bytes of data.
64 bytes from mycentos2.docker1 (192.168.1.4): icmp_seq=1 ttl=64 time=0.176 ms
64 bytes from mycentos2.docker1 (192.168.1.4): icmp_seq=2 ttl=64 time=0.058 ms

这样就实现了不同网络不同容器之间的通信了

[上一节][Docker]六.Docker自动部署nodejs以及golang项目 

[下一节][Docker]八.Docker 容器跨主机通讯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/156663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSG文字-各种文字效果(边框、阴影及颜色倾斜)示例(2)

各种文字效果(边框、阴影及颜色倾斜)示例 各种文字效果(边框、阴影及颜色倾斜)示例的代码如程序清单9-2所示&#xff1a; 1. /* 各种文字效果(边框、阴影及颜色倾斜)示例 */ 2. osg::ref_ptr<osg::Camera> createAllKindText(const string &strDataFolder) 3. {…

基于SpringBoot+vue的token验证

后端&#xff1a; 1&#xff0c;写一个验证token的拦截器 import com.fasterxml.jackson.databind.ObjectMapper; import com.ffyc.news.model.CommonData; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; impor…

家政保洁预约小程序app开发特点有哪些?

家政预约服务小程序APP开发的特点介绍&#xff1b; 1. 低成本&#xff1a;用户通过手机APP下单&#xff0c;省去了中介费用&#xff0c;降低了雇主的雇佣成本。 2. 高收入&#xff1a;家政服务人员通过手机APP接单&#xff0c;省去了中介费用&#xff0c;从而提高了服务人员的…

京东优惠券查询API接口接入方案,item_search_coupon - 京东优惠券查询接口演示

要接入京东优惠券查询API接口&#xff08;item_search_coupon&#xff09;&#xff0c;您可以按照以下步骤进行操作&#xff1a; 注册并获取API密钥&#xff1a;首先&#xff0c;您需要在京东开放平台上注册并获取API密钥。这将为您提供唯一的标识符和密钥&#xff0c;用于访问…

图形编辑器开发:自定义光标管理

大家好&#xff0c;我是前端西瓜哥。 今天来讲讲如何在图形编辑器中使用自定义光标&#xff0c;并对光标其进行管理。 编辑器 github 地址&#xff1a; https://github.com/F-star/suika 线上体验&#xff1a; https://blog.fstars.wang/app/suika/ 自定义光标的意义是什么&am…

【python学习】基础篇-常用模块-subprocess模块:创建和管理子进程

在Python中&#xff0c;可以使用subprocess模块来创建和管理子进程。以下是一些常用的方法&#xff1a; subprocess.run()运行一个新的子进程&#xff0c;并等待其完成。可以传入命令和参数列表&#xff0c;还可以设置环境变量、工作目录等选项。返回一个CompletedProcess对象…

大学计算机毕业设计真的很难完成吗?(资源持续更新~~)

近几年毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕业项目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;于是培训教育机构专门针对各大院校毕业设计进行培训指导&#xff0c;衍生出很多届优秀学员的毕业项目。为了让广大同学都可以顺利通过…

实践小记——C#科学计数法格式化输出

文章速览 示例默认输出&#xff0c;不设置小数精度设置尾数部分的小数精度 总结参考文章 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 示例 默认输出&#xff0c;不设置小数精度 private void Fo…

PHP接收并处理请求中携带的xml格式的信息

企业微信以xml的形式给服务器发送通知。具体参考&#xff1a;企业微信文档——事件格式 dump(file_get_contents("php://input"));/***string(530) "<xml><ToUserName><![CDATA[ww55ca070cb9b7eb22]]></ToUserName><FromUserName>…

前端vite打包工具

文章目录 vite简介特点搭建步骤 vite简介特点 Vite是在推出Vue 3的时候开发的&#xff0c;目前仅支持Vue 3.x&#xff0c;这意味着与Vue 3不兼容的库也不能与Vite一起使用。持热更新&#xff0c;而且热更新的速度不会随着模块增多而变慢。在生产环境下使用Rollup打包。Vite 的…

苍穹外卖—解决前端时间属性显示问题

项目场景&#xff1a; 点击员工管理 出现显示时间属性问题 输入员工姓名为zhangsan 现实的时间属性是数组类型 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 例如&#xff1a;数据传输过程中数据不时出现丢失的情况&#xff0c;偶尔会丢失一部分数据 APP …

简单但好用:4种Selenium截图方法了解一下!

前言 我们执行UI自动化操作时&#xff0c;大多数时间都是不在现场的&#xff0c;出现错误时&#xff0c;没有办法第一时间查看到&#xff0c;这时我们可以通过截图当时出错的场景保存下来&#xff0c;后面进行查看报错的原因&#xff0c;Selenium中提供了几种截图的方法&#x…

wangEditor 富文本编辑

用于 Vue React | wangEditor 适用于vue2,3&#xff0c;react

vue2使用el-tag自定义菜单导航标签

需求&#xff1a;使用el-tag写个菜单导航栏&#xff0c;点击路由的时候就添加 功能&#xff1a; 设置鼠标横向滚动并且不展示滚动条添加关闭其他、关闭左侧、关闭右侧、全部关闭标签功能单个标签删除功能添加&#xff0c;固定标签不可删除右键点击展开操作菜单栏设置个默认固定…

excel自定义函数之汉字转为拼音及大写字母

使用场景&#xff1a;想把姓名转化为拼音格式&#xff0c;然后拼音转为大写字母 至于怎么在excel里面自定义函数&#xff0c;自行百度都有&#xff0c;这里简单截图看看。 步骤&#xff1a;文件》选项》自定义功能区》 打开编辑窗口 把下面这段代码粘贴就能实现汉字转化为拼音…

【无公网IP内网穿透】异地远程访问本地SQL Server数据库

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.本地网页发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 1.前言 数据库的重要性相信大家…

Proxifier是什么?如何用它测试代理ip对目标站的访问结果

Proxifier是一款用于Windows和macOS操作系统的网络工具&#xff0c;允许用户无需对每个应用程序进行单独的配置&#xff0c;就能通过代理服务器或防火墙进行网络连接&#xff0c;因而受到广泛欢迎。 Proxifier 功能强大而灵活&#xff0c;很多人对此一无所知&#xff0c;今天我…

【Python3】【力扣题】338. 比特位计数

【力扣题】题目描述&#xff1a; 题解&#xff1a;从0到n的整数&#xff0c;逐一统计二进制中1的个数&#xff0c;记录在一个新列表中。 【Python3】代码&#xff1a; 1、解题思路&#xff1a;Python函数。 知识点&#xff1a;bin(...)&#xff1a;转为二进制字符串&#xff…

阿里巴巴对裁员谣言报警

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 前两天王自如言论事件&#xff0c;格力选择了报警&#xff0c;称高管遭到姊妹集体侮辱诽谤。 而这两天&#xff0c;阿里巴巴也报警了&#xff0c;原因是网传阿里巴巴要裁员25000人。 咱不公关了…

【ArcGIS Pro二次开发】(77):ArcGIS Pro中图层的获取与解析

一、最简单的获取图层方式 通常情况下&#xff0c;如果要获取当前地图中的图层&#xff0c;可以用2种方法获取。 以下图为例&#xff1a; 一种是【map.Layers】属性获取&#xff0c;结果如下&#xff1a; 可以看出&#xff0c;这里只获取到了第一层级的图层&#xff0c;图层组…