支持随机访问的容器

支持随机访问的容器,第1张

Docker容器互访的三种方法

本文详细介绍了docker容器的三种互访方式,可以帮助大家更好的了解和应用Docker容器,有兴趣的可以掌握。

大家都知道docker容器是互相保护的,不能互相访问,但是如果一些依赖的服务呢?这里有三种方法来处理容器互访的问题。

方法一。虚拟ip访问

安装docker时,docker会默认创建一个内部桥接互联网docker0。创建的每个容器将被分配一个虚拟网卡,容器可以根据ip互相访问。

[root@33fcf82ab4dd/]#[root@CentOS~]#ifconfig ...... docker0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500 inet172.17.0.1netmask255.255.0.0broadcast0.0.0.0 inet6fe80::42:35ff:feac:66d8prefixlen64scopeid0x20<link> ether02:42:35:ac:66:d8txqueuelen0(Ethernet) RXpackets4018bytes266467(260.2KiB) RXerrors0dropped0overruns0frame0 TXpackets4226bytes33935667(32.3MiB) TXerrors0dropped0overruns0carrier0collisions0 ......

运行centos镜像系统,检查详细的ip地址得到:172.17.0.7

[root@CentOS~]#dockerrun-it--namecentos-1docker.io/centos:latest [root@6d214ff8d70a/]#ifconfig eth0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500 inet172.17.0.7netmask255.255.0.0broadcast0.0.0.0 inet6fe80::42:acff:fe11:7prefixlen64scopeid0x20<link> ether02:42:ac:11:00:07txqueuelen0(Ethernet) RXpackets16bytes1296(1.2KiB) RXerrors0dropped0overruns0frame0 TXpackets8bytes648(648.0B) TXerrors0dropped0overruns0carrier0collisions0

d出同样指令的容器,查看详细ip地址得到:172.17.0.8

[root@CentOS~]#dockerrun-it--namecentos-2docker.io/centos:latest [root@33fcf82ab4dd/]#ifconfig eth0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500 inet172.17.0.8netmask255.255.0.0broadcast0.0.0.0 inet6fe80::42:acff:fe11:8prefixlen64scopeid0x20<link> ether02:42:ac:11:00:08txqueuelen0(Ethernet) RXpackets8bytes648(648.0B) RXerrors0dropped0overruns0frame0 TXpackets8bytes648(648.0B) TXerrors0dropped0overruns0carrier0collisions0

容器内部ping检测结果如下:

[root@33fcf82ab4dd/]#ping172.17.0.7 PING172.17.0.7(172.17.0.7)56(84)bytesofdata. 64bytesfrom172.17.0.7:icmp_seq=1ttl=64time=0.205ms 64bytesfrom172.17.0.7:icmp_seq=2ttl=64time=0.119ms 64bytesfrom172.17.0.7:icmp_seq=3ttl=64time=0.118ms 64bytesfrom172.17.0.7:icmp_seq=4ttl=64time=0.101ms

这种方法必须知道每个容器的ip,在具体应用中不好用。

方法2,链接

在容器 *** 作的情况下添加主参数链接。

*** 作第一个容器。

dockerrun-it--namecentos-1docker.io/centos:latest

*** 作第二个容器。

[root@CentOS~]#dockerrun-it--namecentos-2--linkcentos-1:centos-1docker.io/centos:latest

-link:主参数中的第一个centos-1是容器名,第二个centos-1是定义的容器昵称(访问容器的应用程序昵称)。为了更方便和更快,容器名通常是默认设置的。

测试结果如下:

[root@e0841aa13c5b/]#pingcentos-1 PINGcentos-1(172.17.0.7)56(84)bytesofdata. 64bytesfromcentos-1(172.17.0.7):icmp_seq=1ttl=64time=0.210ms 64bytesfromcentos-1(172.17.0.7):icmp_seq=2ttl=64time=0.116ms 64bytesfromcentos-1(172.17.0.7):icmp_seq=3ttl=64time=0.112ms 64bytesfromcentos-1(172.17.0.7):icmp_seq=4ttl=64time=0.114ms

此方法指定容器的创建顺序。如果集群中的几个容器要互相访问,不方便申请。

方法3,创建桥接网络

1.安装docker后,运行以下命令创建桥接网络:dockernetworkcreatetestnet

查看新创建的桥测试网。

2. *** 作容器连接到testnetInternet。

*** 作:dockerrun-it-name<容器名>:-network<;桥>-网络别名<网络昵称>:<图像名称>:

[root@CentOS~]#dockerrun-it--namecentos-1--networktestnet--network-aliascentos-1docker.io/centos:latest [root@CentOS~]#dockerrun-it--namecentos-2--networktestnet--network-aliascentos-2docker.io/centos:latest

3.从一个容器ping另一个容器,检测结果如下:

[root@fafe2622f2af/]#pingcentos-1 PINGcentos-1(172.20.0.2)56(84)bytesofdata. 64bytesfromcentos-1.testnet(172.20.0.2):icmp_seq=1ttl=64time=0.158ms 64bytesfromcentos-1.testnet(172.20.0.2):icmp_seq=2ttl=64time=0.108ms 64bytesfromcentos-1.testnet(172.20.0.2):icmp_seq=3ttl=64time=0.112ms 64bytesfromcentos-1.testnet(172.20.0.2):icmp_seq=4ttl=64time=0.113ms

4.如果访问容器中的服务项,可以用这个方法访问::<服务项目服务器端口>:

强烈建议使用此方法自定义互联网。因为是互联网的别称,所以不用担心ip是否变更。如果在docker内部连接光明互联,可以互访。网桥也可以创建几个,在不同的子网中受到保护。

以上是Docker集装箱互访三种方式的详细内容。关于Docker集装箱互访的资料很多,请关心其他相关文章!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存