docker端口映射详解
一、端口映射概述:
在Docker中容器默认是无法与外部通信的,需要在启动命令中加入对应的参数才允许容器与外界通信。
当Docker中运行一个Web服务时,需要把容器内的Web服务应用程序端口映射到本地宿主机的端口。这样,用户访问宿主机指定的端口的话,就相当于访问容器内部的Web服务端口。
二、案例实验:
1、-P选项,随机端口
使用-P选项时Docker会随机映射一个端口至容器内部的开放端口
[root@docker ~]# docker run -d -P --name nginx-test1 nginx
使用docker port可以查看端口映射情况
[root@docker ~]# docker port nginx-test1
访问测试:192.168.100.131:32768
[root@docker ~]# docker logs nginx-test1
查看映射的随机端口范围
[root@docker ~]#
cat /proc/sys/net/ipv4/ip_local_port_range
2、使用-p可以指定要映射到的本地端口。
Local_Port:Container_Port,任意地址的指定端口
端口映射参数中指定了宿主机的8000映射到容器内部的80端口,可以多次使用-p选项
[root@docker ~]# docker run -d -p 8000:80 --name nginx-test2 nginx
访问测试:192.168.100.131:8000
这种方式会映射到所有接口地址,所有访客都可以通过宿主机所有IP的端口来访问容器。
如下:查看宿主机当前的ip地址
访问测试:192.168.59.153:8000
****Local_IP:Local_Port:Container_Port ****映射到指定地址的指定端口
[root@docker ~]# docker run -d -p
192.168.100.131:9000:80 --name nginx-test3 nginx
访问测试:192.168.100.131:9000
访问测试:192.168.59.153:9000
****Local_IP::Container_Port ****映射到指定地址,但是宿主机端口是随机分配的
[root@docker ~]# docker run -d -p 192.168.100.131::80 --name nginx-test4 nginx
[root@docker ~]# docker port nginx-test4
访问测试:192.168.100.131:32770
3、指定传输协议:TCP
[root@docker ~]# docker run -d -p 80:80/tcp --name nginx-test5 nginx
[root@docker ~]# docker port nginx-test5
访问测试:192.168.100.131:80
版权归原作者 人间打气筒(Ada) 所有, 如有侵权,请联系我们删除。