如何在端口8080上运行docker而不使用docker-p选项,而是从dockerfile或dockercompose?

如何在端口8080上运行docker而不使用docker-p选项,而是从dockerfile或dockercompose?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我知道当我们使用docker run命令(如docker run-p 8080:8080 dockerimage)提供-p选项时,它将在docker端口8080上运行。。。但是我想用容器ID编写docker run命令,而不使用-p选项。。。像docker一样运行imagename(不指定端口名) 如果我在dockerFile中写入EXPOSE 8080/tcp,那么当我运行docker时,它只会打开dockerFile中Exposed的端口,但我想让docker在特定端口(而不是端口80)上运

我知道当我们使用docker run命令(如docker run-p 8080:8080 dockerimage)提供-p选项时,它将在docker端口8080上运行。。。但是我想用容器ID编写docker run命令,而不使用-p选项。。。像docker一样运行imagename(不指定端口名)

如果我在dockerFile中写入EXPOSE 8080/tcp,那么当我运行docker时,它只会打开dockerFile中Exposed的端口,但我想让docker在特定端口(而不是端口80)上运行。可能docker compose会帮我实现吗


请指导。

当然没有办法使用Dockerfile转发端口,但使用
docker compose也可以:

版本:“3”
服务:
myapp:
图片:你好,世界
端口:
- 8080:80

查看

您不能,正如您可以在不添加shell重定向的情况下使
ls
写入文件一样。操作员需要告诉Docker要在何处发布哪些端口;映像无法强制特定的主机行为。如何使用8080:82代替端口8080:80。这可能吗?@Onv左边的值是主机上的端口,右边的值是容器中的端口。您可以使用任意两个来创建转发规则。8080:82也是可能的。使用VS2019,我使用Docker Compose创建了一个支持容器编排的ASPNet Webforms应用程序。在我的Docker Compose中,我给出了端口8080:80的值,它是有效的,但当我给出8080:81时,它无法启动(即使在Docker文件中我也说EXPOSE 81)。我试过在DockerFile中使用和不使用EXPOSE语句,但没有success@Onv在Dockerfile中公开不起任何作用。这就像提示图像用户知道应用程序正在哪个端口上侦听。你确定你的应用程序正在监听81吗?