docker端口映射和容器间互联

端口映射

端口映射就是将外网主机的IP地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。端口映射有动态和静态之分。
通俗来讲,端口映射是将一台主机的内网(LAN)IP地址映射成一个公网(WAN)IP地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转移到本地局域网内部提供这种特定服务的主机;利用端口映射功能还可以将一台外网IP地址机器的多个端口映射到内网不同机器上的不同端口。
端口映射功能还可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等协议。理论上可以提供65535(总端口数)-1024(保留端口数)=64511个端口的映射。

举例说明如何设置端口映射:例如要映射一台IP地址为192.168.111.10的WEB服务器,只需把服务器的IP地址192.168.111.10和提供web服务的TCP端口80填入到路由器的端口映射表中即可。

删除原来的容器(如果没有可以不执行此操作):

[root@foundation17 docker]# docker rm -f `docker ps -aq`
dbcc3fcddec4
15a3d7940850
f0d0da9c1379
eb3e9ed8d905
fb81fe9d9f40

建立端口映射:
对于宿主机来说nginx使用8080端口,映射到容器端的80端口:

[root@foundation17 docker]# docker run -d --name vm1 -p 8080:80 nginx
5cc176f915726422f394109f118d0a25eb15956f7f94295762448230a5cd6948

端口映射查看:

[root@foundation17 docker]# iptables -t nat -nL

可以看到策略,当访问宿主机8080端口时,转接到172.17.0.2端(容器端)的80端口。8080端口是对外端口,容器80端口对外透明。将首页文件复制到nginx默认发布目录,就可以在访问宿主机端8080端口时候转接到容器端的80端口也就是nginx服务。

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 to:172.17.0.2:80

容器互联

容器的连接(linking)系统是除了端口映射外,另一种跟容器中应用交互的方式。

该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。

用ubuntu镜像生成一个新的容器vm2,并和刚才容器vm1互联,互联之后容器相互之间可以ping通:

[root@foundation17 docker]# docker run -it --name vm2 --link vm1:nginx ubuntu   
root@b98b939b77d3:/# ping nginx
PING nginx (172.17.0.2) 56(84) bytes of data.
64 bytes from nginx (172.17.0.2): icmp_seq=1 ttl=64 time=0.088 ms
64 bytes from nginx (172.17.0.2): icmp_seq=2 ttl=64 time=0.095 ms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值