容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。
使用 docker ps 可以看到容器状态,包括端口状态。例如,该示例中端口 5000 绑定主机端口 32768。
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper
可以使用 -p 标识来指定容器端口绑定到主机端口。
两种方式的区别是:
runoob@runoob:~$ docker run -d -p 5001:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
注意,5001为本地端口,5000为容器端口。
上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。
例如:
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
docker port 命令可以快捷地查看端口的绑定情况。
runoob@runoob:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001
端口映射并不是唯一把 docker 连接到另一个容器的方法。