微服务

docker 的container模式

2021-08-10  本文已影响0人  田涛347

Docker网络container模式是指,创建新容器的时候,通过--net container参数,指定其和已经存在的某个容器共享一个 Network Namespace。如下图所示,右方黄色新创建的container,其网卡共享左边容器。因此就不会拥有自己独立的 IP,而是共享左边容器的 IP 172.17.0.2,端口范围等网络资源,两个容器的进程通过 lo 网卡设备通信。

但这两个容器在其他的资源上,如文件系统、进程列表等还是隔离的。


image.png

container模式实例

使用busybox镜像新建bb容器,bb容器网络模型默认采用的bridge模式

docker run  -itd --name bb busybox

使用Nginx镜像新建nginx容器,并用--net container:bb参数,指定该容器的网络模型为container模式,和bb容器共用相同的网络命名空间。

docker load <  /share/images/nginx.tar
docker run -d --name nginx --net container:bb nginx

进入bb容器

docker  exec -it bb sh

使用命令查看网络端口情况

netstat -antp

可以看到,nginx容器的80端口已经映射到了bb容器的80端口


ctive Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID /Program name   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -

在bb容器内部访问bb容器本机的80商品,我们可以看到实际上可以访问到nginx容器的

wget -O- localhost`

查看bb容器的ip地址,并退出bb容器

ifconfig
exit

使用上面得到IP地址,从云环境主机的环境,去访问

curl 172.17.0.2

也会得到

<!DOCTYPE html>

<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="[http://nginx.org/](http://nginx.org/)">nginx.org</a>.<br/>
Commercial support is available at
<a href="[http://nginx.com/](http://nginx.com/)">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

总结

Docker container网络模式,这种模式可以节约一定的网络资源,并能降低容器间的通信的难度。container网络模式使多个容器共享网络环境,在这种模式下容器可以通过访问localhost来访问 namespace下的其他容器,网络性能高

上一篇下一篇

猜你喜欢

热点阅读