【问题标题】:docker container ports confusion [duplicate]码头集装箱港口混乱[重复]
【发布时间】:2019-11-22 07:07:51
【问题描述】:

我对 Docker 端口有些困惑。由于我不知道服务器的 IP,我无法检查自己。

在 Dockerfile 中我可以看到下面

EXPOSE 8080:8080

但是要运行容器,使用下面的命令运行相同的图像

docker run -d --restart=unless-stopped --name image1 -p 3000:8080 image1:latest

我的困惑是创建镜像主机端口在 Dockerfile 中被指定为 8080,但是当从相同的镜像主机端口运行容器时,给出的端口是 3000。那么这个容器将在哪个主机端口上运行,为什么?

【问题讨论】:

  • 你的语法错误,只有EXPOSE 8080。您不能在 Dockrfile 中将端口与主机端口绑定。
  • ...作为一般规则,您不能在 Dockerfile 中指定主机 anything

标签: docker dockerfile containers


【解决方案1】:

EXPOSE 指令实际上并不发布端口。它充当构建映像的人和运行容器的人之间的一种文档,关于打算发布哪些端口。要在运行容器时实际发布端口,请使用 docker run 上的 -p 标志来发布和映射一个或多个端口,或者使用 -P 标志来发布所有暴露的端口并将它们映射到高阶端口。

https://docs.docker.com/engine/reference/builder/

因此 3000 端口将暴露给您的容器。

【讨论】:

    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2018-01-20
    • 2020-06-14
    相关资源
    最近更新 更多