我爲一個以標準父文件開頭的apache服務器創建了自己的Dockerfile。參見下面我Dockerfile第一行:關閉Docker從父文件中暴露端口
FROM php:7.0-apache
EXPOSE 8080
這位家長暴露的端口80現在有我在Dockerfile暴露的端口8080。只有當我運行它時,兩個端口都是暴露的。
它可以關閉我的Dockerfile中的父端口80?由於我無法編輯該文件。
我爲一個以標準父文件開頭的apache服務器創建了自己的Dockerfile。參見下面我Dockerfile第一行:關閉Docker從父文件中暴露端口
FROM php:7.0-apache
EXPOSE 8080
這位家長暴露的端口80現在有我在Dockerfile暴露的端口8080。只有當我運行它時,兩個端口都是暴露的。
它可以關閉我的Dockerfile中的父端口80?由於我無法編輯該文件。
除了告訴碼頭工人暴露的端口,你必須配置Apache監聽8080,做這些兩個版本:
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"}]}
作爲替代方案,而不是搬運工圖像還可以在編輯配置使用端口映射來實現相同的結果。
對於主機端口80泊塢窗圖像中,像這樣的例子映射端口8080:
docker run -d -p 8080:80 image_name
這是真的,但我使用的是Docker-compose,它將是多個apache的內部端口號容器。這樣它就暴露在主機之外。 – Tom
是的,我做了這一點,8080端口工作正常。只有端口80也暴露在父Dockerfile中。我想讓80號港口關閉? – Tom
但請記住,端口80已暴露,但未打開。 – Robert
這是真的,所以也許沒有問題,因爲它背後有它的問題。 – Tom