有没有办法做到使用docker文件绑定主机上的特定端口到容器端口

有没有办法做到使用docker文件将主机上的特定端口绑定到容器端口

在docker文件中我有以下项目步骤1:EXPOSE 8090:8080

但是当我运行docker运行,容器绑定到端口8080而不是8090docker文件中所述。

任何想法如何我可以实现这个使用docker文件或有没有更好的办法来实现这一点。

无法看到, EXPOSE实现了EXPOSEfunction,正如您所描述的那样。

从文档 :

暴露

 EXPOSE <port> [<port>...] 

EXPOSE指令通知Docker,容器将在运行时监听指定的networking端口。 Docker使用这些信息来使用链接互连容器(请参阅Docker用户指南 )。

EXPOSE不是stream浪者forwarded_portfunction的等价物。

当你需要链接容器时,这很有用。

如果您需要将端口从容器转发到主机,请使用-p标志。
例:

 docker run -it -p 80:80 5959f94a4d10 /bin/bash 

有没有办法做到使用docker文件将主机上的特定端口绑定到容器端口

Dockerfile被devise为只包含便携式configuration。 绑定到主机端口是不可移植的,因为主机端口可能在每个系统上都不可用。 这些configuration标志可能在运行时可用,但不包括在Dockerfile语法中(以及由此产生的Docker镜像)。

在这种情况下,主机端口和其他非便携式configuration(例如卷挂载)是容器的HostConfig结构的一部分。 这些仅在容器运行时可用。