关闭Docker从父文件公开端口

时间:2017-06-03 12:10:06

标签: docker

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

FROM php:7.0-apache
EXPOSE 8080

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

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

3 个答案:

答案 0 :(得分:0)

除了告诉docker公开端口之外,你必须配置apache来监听8080,做这两个版本:

  1. /etc/apache2/ports.conf
  2. /etc/apache2/sites-enabled/000-default.conf
  3. 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.如果使用上一个命令,端口不会打开并且不会公开。如果您在->80中看不到docker ps符号,则不会公开该端口:

    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"}]}
    

答案 1 :(得分:0)

作为替代方案,您可以使用端口映射来实现相同的结果,而不是编辑docker镜像中的配置。

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

docker run -d -p 8080:80 image_name

答案 2 :(得分:0)

很遗憾,目前尚不可能

但是您可以follow this issue on Docker's GitHub。它是从2014年开始的,但仍然是 Open 。永远不知道...