2026/4/18 14:21:56
网站建设
项目流程
动漫网站源码自动采级,网站建设项目付款方式,自己做的影视网站买会员违法吗,做网站运营有前途我们都知道docker容器之间是互相隔离的#xff0c;不能互相访问#xff0c;但如果有些依赖关系的服务要怎么办呢。下面介绍三种方法解决容器互访问题。方式一、虚拟ip访问安装docker时#xff0c;docker会默认创建一个内部的桥接网络docker0#xff0c;每创建一个容器分配一…我们都知道docker容器之间是互相隔离的不能互相访问但如果有些依赖关系的服务要怎么办呢。下面介绍三种方法解决容器互访问题。方式一、虚拟ip访问安装docker时docker会默认创建一个内部的桥接网络docker0每创建一个容器分配一个虚拟网卡容器之间可以根据ip互相访问。[root33fcf82ab4dd /]# [rootCentOS ~]# ifconfig ...... docker0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:35ff:feac:66d8 prefixlen 64 scopeid 0x20link ether 02:42:35:ac:66:d8 txqueuelen 0 (Ethernet) RX packets 4018 bytes 266467 (260.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4226 bytes 33935667 (32.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ......运行一个centos镜像 查看ip地址得到172.17.0.7[rootCentOS ~]# docker run -it --name centos-1 docker.io/centos:latest [root6d214ff8d70a /]# ifconfig eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 172.17.0.7 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:7 prefixlen 64 scopeid 0x20link ether 02:42:ac:11:00:07 txqueuelen 0 (Ethernet) RX packets 16 bytes 1296 (1.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 648 (648.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0以同样的命令再起一个容器查看ip地址得到172.17.0.8[rootCentOS ~]# docker run -it --name centos-2 docker.io/centos:latest [root33fcf82ab4dd /]# ifconfig eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 172.17.0.8 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:8 prefixlen 64 scopeid 0x20link ether 02:42:ac:11:00:08 txqueuelen 0 (Ethernet) RX packets 8 bytes 648 (648.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 648 (648.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0容器内部ping测试结果如下[root33fcf82ab4dd /]# ping 172.17.0.7 PING 172.17.0.7 (172.17.0.7) 56(84) bytes of data. 64 bytes from 172.17.0.7: icmp_seq1 ttl64 time0.205 ms 64 bytes from 172.17.0.7: icmp_seq2 ttl64 time0.119 ms 64 bytes from 172.17.0.7: icmp_seq3 ttl64 time0.118 ms 64 bytes from 172.17.0.7: icmp_seq4 ttl64 time0.101 ms这种方式必须知道每个容器的ip在实际使用中并不实用。方式二、link运行容器的时候加上参数link运行第一个容器docker run -it --name centos-1 docker.io/centos:latest运行第二个容器[rootCentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest--link参数中第一个centos-1是容器名第二个centos-1是定义的容器别名使用别名访问容器为了方便使用一般别名默认容器名。测试结果如下[roote0841aa13c5b /]# ping centos-1 PING centos-1 (172.17.0.7) 56(84) bytes of data. 64 bytes from centos-1 (172.17.0.7): icmp_seq1 ttl64 time0.210 ms 64 bytes from centos-1 (172.17.0.7): icmp_seq2 ttl64 time0.116 ms 64 bytes from centos-1 (172.17.0.7): icmp_seq3 ttl64 time0.112 ms 64 bytes from centos-1 (172.17.0.7): icmp_seq4 ttl64 time0.114 ms此方法对容器创建的顺序有要求如果集群内部多个容器要互访使用就不太方便。方式三、创建bridge网络1.安装好docker后运行如下命令创建bridge网络docker network create testnet查询到新创建的bridge testnet。2.运行容器连接到testnet网络。使用方法docker run -it --name 容器名 ---network bridge --network-alias 网络别名 镜像名[rootCentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest [rootCentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest3.从一个容器ping另外一个容器测试结果如下[rootfafe2622f2af /]# ping centos-1 PING centos-1 (172.20.0.2) 56(84) bytes of data. 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq1 ttl64 time0.158 ms 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq2 ttl64 time0.108 ms 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq3 ttl64 time0.112 ms 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq4 ttl64 time0.113 ms4.若访问容器中服务可以使用这用方式访问 网络别名服务端口号推荐使用这种方法自定义网络因为使用的是网络别名可以不用顾虑ip是否变动只要连接到docker内部bright网络即可互访。bridge也可以建立多个隔离在不同的网段。