关闭 Docker 从父文件公开端口

Tom*_*Tom 8 docker

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

FROM php:7.0-apache
EXPOSE 8080
Run Code Online (Sandbox Code Playgroud)

这个父级暴露了端口 80。现在我在我的 Dockerfile 中暴露了端口 8080。只有当我运行它时,两个端口才会公开。

是否可以关闭我的 Dockerfile 中的父端口 80?因为我无法编辑该文件。

Rob*_*ert -2

除了告诉docker暴露端口之外,你还必须配置apache来监听8080,执行以下两个版本:

\n\n
    \n
  1. /etc/apache2/ports.conf
  2. \n
  3. /etc/apache2/sites-enabled/000-default.conf
  4. \n
\n\n

Dockerfile:

\n\n
FROM php:7.0-apache\nRUN sed -si \'s/Listen 80/Listen 8080/\' /etc/apache2/ports.conf\nRUN sed -si \'s/VirtualHost .:80/VirtualHost *:8080/\' /etc/apache2/sites-enabled/000-default.conf\nEXPOSE 8080\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后:

\n\n
docker run -d -p 8080:8080 image_name \n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:

\n\n

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

\n\n
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                            NAMES\n100fbb367226        php7                       "docker-php-entryp..."   2 minutes ago       Up 46 seconds       80/tcp, 0.0.0.0:8080->8080/tcp   musing_snyder\n
Run Code Online (Sandbox Code Playgroud)\n\n

和:

\n\n
\xe2\x96\xb6 docker inspect 100fbb367226 -f "{{json .NetworkSettings.Ports}}"\n{"80/tcp":null,"8080/tcp":[{"HostIp":"0.0.0.0","HostPort":"8080"}]}\n
Run Code Online (Sandbox Code Playgroud)\n