closuresDocker从父文件中暴露端口
我为一个以标准父文件开头的apache服务器做了我自己的Dockerfile。 请参阅下面的Dockerfile中的第一行:
FROM php:7.0-apache EXPOSE 8080
这个父母暴露了端口80.现在我在Dockerfile中暴露了8080端口。 只有当我运行它时,两个端口都是暴露的。
它可以closures我的Dockerfile中的父端口80? 由于我无法编辑该文件。
除了告诉docker公开端口,你必须configurationApache来听8080,做这两个版本:
- /etc/apache2/ports.conf
- /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