我尝试了以下操作:
docker run --expose 8765 --publish-all -it nginx
但这也暴露了80
和端口8765
[root@centos7]# docker port f4b608998815
80/tcp -> 0.0.0.0:49156
80/tcp -> :::49156
8765/tcp -> 0.0.0.0:49155
8765/tcp -> :::49155
如何在不指定位置的情况下将端口8765
发布到主机中的一个随机可用端口?
nginx
基本映像已经声明了EXPOSE 80
,并且无法取消公开端口,因此,如果使用docker run -P
或--publish-all
选项发布每个公开的端口,则它将始终与手动公开的端口一起发布。
您可以使用小写docker run -p
选项,只使用一个端口号,将该端口发布到任意主机端口上:
docker run -p 8765 -d nginx
由于Docker容器内部不会有端口冲突,您可能只想使用默认的HTTP端口80,与标准的Nginx配置相匹配。--expose --publish-all
组合几乎是docker run --expose
的唯一实际效果,--port
也可以得到同样的效果;您几乎从不需要docker run --expose
选项。