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模式的主要内容,如果未能解决你的问题,请参考以下文章