无法删除旧的 Docker 网络设置
Can't remove old Docker Networking Settings
希望能帮到你
我有一个旧的 docker 图像配置为网络公开端口 8082。我使用这个图像作为我的基础图像来创建一个新的容器,但我似乎无法摆脱旧的网络设置。
我的新 Dockerfile 或 docker-composer 文件中未指定 8082 端口,但它仍然出现。我的新端口是 8091.
server@omv:~/docker/app$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f023f6a0a792 api_app_image "/entrypoint.sh" 3 minutes ago Up 3 minutes 80/tcp, 8082/tcp, 0.0.0.0:8091->8091/tcp api_app
这是我的 docker-composer 文件。
api_app:
container_name: api_app
build:
context: ./api
dockerfile: Dockerfile
ports:
- "8091:8091"
volumes:
- ./api/app:/var/www/html/apiapp
这是我的 Dockerfile 中的一个片段
FROM bde8c3167970
VOLUME /etc/nginx/conf.d
VOLUME /var/www/html/apiapp
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 80 8091
谢谢,如有任何帮助,我们将不胜感激。
没有 Docker 文件选项可以删除使用 EXPOSE
, and it is always 设置的端口;您无法删除此值。
但是:
在现代 Docker 中,简单地“公开”端口(与“已发布”不同)几乎没有任何意义。它在 docker ps
输出中显示为未映射,如果您使用 docker run -P
选项发布所有暴露的端口,它将被分配一个任意主机端口,仅此而已。暴露额外的端口没有坏处。
由于每个容器 运行 都在一个隔离的网络命名空间中,因此在多个容器中使用相同的端口没有任何坏处。容器端口不必与主机端口匹配。如果基础镜像期望 运行 端口 8082 上的应用程序,我会在派生镜像中继续这样做;在 Compose 设置中,您可以设置 ports: ['8091:8082']
以选择不同的主机端口。
希望能帮到你
我有一个旧的 docker 图像配置为网络公开端口 8082。我使用这个图像作为我的基础图像来创建一个新的容器,但我似乎无法摆脱旧的网络设置。 我的新 Dockerfile 或 docker-composer 文件中未指定 8082 端口,但它仍然出现。我的新端口是 8091.
server@omv:~/docker/app$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f023f6a0a792 api_app_image "/entrypoint.sh" 3 minutes ago Up 3 minutes 80/tcp, 8082/tcp, 0.0.0.0:8091->8091/tcp api_app
这是我的 docker-composer 文件。
api_app:
container_name: api_app
build:
context: ./api
dockerfile: Dockerfile
ports:
- "8091:8091"
volumes:
- ./api/app:/var/www/html/apiapp
这是我的 Dockerfile 中的一个片段
FROM bde8c3167970
VOLUME /etc/nginx/conf.d
VOLUME /var/www/html/apiapp
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 80 8091
谢谢,如有任何帮助,我们将不胜感激。
没有 Docker 文件选项可以删除使用 EXPOSE
, and it is always
但是:
在现代 Docker 中,简单地“公开”端口(与“已发布”不同)几乎没有任何意义。它在
docker ps
输出中显示为未映射,如果您使用docker run -P
选项发布所有暴露的端口,它将被分配一个任意主机端口,仅此而已。暴露额外的端口没有坏处。由于每个容器 运行 都在一个隔离的网络命名空间中,因此在多个容器中使用相同的端口没有任何坏处。容器端口不必与主机端口匹配。如果基础镜像期望 运行 端口 8082 上的应用程序,我会在派生镜像中继续这样做;在 Compose 设置中,您可以设置
ports: ['8091:8082']
以选择不同的主机端口。