closuresDocker从父文件中暴露端口

我为一个以标准父文件开头的apache服务器做了我自己的Dockerfile。 请参阅下面的Dockerfile中的第一行:

FROM php:7.0-apache EXPOSE 8080 

这个父母暴露了端口80.现在我在Dockerfile中暴露了8080端口。 只有当我运行它时,两个端口都是暴露的。

它可以closures我的Dockerfile中的父端口80? 由于我无法编辑该文件。

除了告诉docker公开端口,你必须configurationApache来听8080,做这两个版本:

  1. /etc/apache2/ports.conf
  2. /etc/apache2/sites-enabled/000-default.conf

Dockerfile:

 FROM php:7.0-apache RUN sed -si 's/Listen 80/Listen 8080/' /etc/apache2/ports.conf RUN sed -si 's/VirtualHost .:80/VirtualHost *:8080/' /etc/apache2/sites-enabled/000-default.conf EXPOSE 8080 

然后:

 docker run -d -p 8080:8080 image_name 

编辑:

关于端口80.如果使用前面的命令,端口不会被打开,也不会被暴露。 如果您在docker ps中看不到->80符号,则该端口不会被暴露:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 100fbb367226 php7 "docker-php-entryp..." 2 minutes ago Up 46 seconds 80/tcp, 0.0.0.0:8080->8080/tcp musing_snyder 

和:

 ▶ docker inspect 100fbb367226 -f "{{json .NetworkSettings.Ports}}" {"80/tcp":null,"8080/tcp":[{"HostIp":"0.0.0.0","HostPort":"8080"}]} 

作为一种替代方法,不是在Docker镜像中编辑configuration,而是使用端口映射来获得相同的结果。

例如,将主机上的端口8080映射到泊坞窗镜像中的端口80,如下所示:

docker run -d -p 8080:80 image_name