背景说明
解决方案
随机映射
通过-P可以将容器将要暴露的端口随机映射至主机端口
[root@vm1 etc]# docker run --rm -P -d nginx
WARNING: IPv4 forwarding is disabled. Networking will not work.
994aa16f4d3bf9e8e260758d2e98654a1f335c0ee5b2a780cdafcc1a56a6313c
[root@vm1 etc]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
994aa16f4d3b nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:49154->80/tcp, :::49154->80/tcp sad_archimedes
[root@vm1 etc]#
容器80端口映射至主机49154端口
指定端口
通过-p可以指定主机端口8080和容器端口80进行映射
[root@vm1 etc]# docker run -p 8080:80 -d nginx
WARNING: IPv4 forwarding is disabled. Networking will not work.
6bcfe0cc5da2d48effae84b026a87bbb6db8fcafef563fabe48bba40f0c01aa4
[root@vm1 etc]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6bcfe0cc5da2 nginx "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp strange_nash
[root@vm1 etc]#
如果一个主机有多个IP网络地址,可以使用如下语法
-p ip:hostPort:containerPort
-p ip::containerPort
多口映射
如果需要映射多个端口出来可以使用多个-p参数,如下
[root@vm1 etc]# docker run -p 8080:80 -p 9090:90 -d xxx