Docker 网络:container模式

Posted freeaihub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 网络:container模式相关的知识,希望对你有一定的参考价值。

本文转自https://www.freeaihub.com/article/container-module-in-docker-network.html,该页可在线运行案例

技术图片

在前一篇Docker 网络:host模式中我们已经介绍Docker网络模型中的host模式。本节将对Docker网络模型中的host模型进行理论介绍,再通过案例的实操,让您更好地去理解docker网络中的container模式。

container模式

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

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

技术图片

container模式实例

使用busybox镜像新建bb容器,bb容器网络模型默认采用的bridge模式,我们稍后会讲。

docker run  -itd --name bb -p 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端口

Active 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/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

总结

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

以上是关于Docker 网络:container模式的主要内容,如果未能解决你的问题,请参考以下文章

docker swarm网络模式

docker的四种网络模式

Docker 网络管理

Docker 网络模式

docker的网络模式:none

Docker网络模式