docker端口映射底层原理及常见写法
1.将宿主机的所有IP地址的81端口映射到容器的80端口。默认使用tcp协议。
[root@centos201 ~]# docker run -d -p 81:80 --name web01 nginx:1.20.1
e196b4a3a6b1b2bb7b97ccfe99479fd98786653c3799270aef98483b18a19301
[root@centos201 ~]#
2.指定IP地址进行端口映射
[root@centos201 ~]# docker run -d -p 10.0.0.201:82:80 --name web02 nginx:1.20.1 # 指定IP地址进行端口映射
e3f2d718b21ff9e8225a4f0115afcf1b8a10f5bcf150ad7fac396c90bcafcff7
[root@centos201 ~]#
3.指定端口范围进行映射
[root@centos201 ~]# docker run -d -p 10.0.0.201:20-21:20-21 --name web03 nginx:1.20.1 # 指定端口范围进行映射
e9a21d00a28cf679935811b555c4a4398e1836bfd39c7e562f63eb9159fa3bd1
[root@centos201 ~]#
4.指定多个不连续的端口映射
[root@centos201 ~]# docker run -d -p 10.0.0.201:9200:9200 -p 10.0.0.201:9300:9300 --name web04 nginx:1.20.1 # 指定多个不连续的端口映射
bec71b4176c51908b9149ecdb910618885993519e419b68909b99a7222e90b83
[root@centos201 ~]#
5.指定协议,若不指定协议,默认是tcp协议。
[root@centos201 ~]# docker run -d -p 10.0.0.201:53:53/udp -p 10.0.0.201:53:53/tcp --name web05 nginx:1.20.1 # 指定协议,若不指定协议,默认是tcp协议。
fc667244769fc37b6fe40d23c8cb99dcf1b5b6dd0d3281077c205f033f4272fc
[root@centos201 ~]#
6.宿主机会产生一个随机端口对容器的80端口进行映射
[root@centos201 ~]# docker run -d -p 10.0.0.201::80/tcp --name web06 nginx:1.20.1 # 宿主机会产生一个随机端口对容器的80端口进行映射
dfd0bbc7cb31f11d11bf648fd7e22547e2e38be1485ab352ec3d2515d321c5cd
[root@centos201 ~]#
7.-P(大写)选项可以让宿主机会用一个随机端口对容器暴露的端口进行映射。
[root@centos201 ~]# docker run -d -P --name web07 nginx:1.20.1 # -P(大写)选项可以让宿主机会用一个随机端口对容器暴露的端口进行映射。
8e4142fdfdb716e24e049bf1a5984e712d00352773b55f8a7b518226ba533a7b
[root@centos201 ~]#
[root@centos201 ~]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8e4142fdfdb7 nginx:1.20.1 "/docker-entrypoint.…" 6 seconds ago Up 6 seconds 0.0.0.0:32769->80/tcp, :::32768->80/tcp web07
dfd0bbc7cb31 nginx:1.20.1 "/docker-entrypoint.…" About a minute ago Up About a minute 10.0.0.201:32768->80/tcp web06
[root@centos201 ~]#