背景说明

解决方案

随机映射

通过-P可以将容器将要暴露的端口随机映射至主机端口

  1. [root@vm1 etc]# docker run --rm -P -d nginx
  2. WARNING: IPv4 forwarding is disabled. Networking will not work.
  3. 994aa16f4d3bf9e8e260758d2e98654a1f335c0ee5b2a780cdafcc1a56a6313c
  4. [root@vm1 etc]# docker ps
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 994aa16f4d3b nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:49154->80/tcp, :::49154->80/tcp sad_archimedes
  7. [root@vm1 etc]#

容器80端口映射至主机49154端口

指定端口

通过-p可以指定主机端口8080和容器端口80进行映射

  1. [root@vm1 etc]# docker run -p 8080:80 -d nginx
  2. WARNING: IPv4 forwarding is disabled. Networking will not work.
  3. 6bcfe0cc5da2d48effae84b026a87bbb6db8fcafef563fabe48bba40f0c01aa4
  4. [root@vm1 etc]# docker ps
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 6bcfe0cc5da2 nginx "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp strange_nash
  7. [root@vm1 etc]#

如果一个主机有多个IP网络地址,可以使用如下语法

  1. -p ip:hostPort:containerPort
  2. -p ip::containerPort

多口映射

如果需要映射多个端口出来可以使用多个-p参数,如下

  1. [root@vm1 etc]# docker run -p 8080:80 -p 9090:90 -d xxx