【问题标题】:Docker Container - ports settingsDocker 容器 - 端口设置
【发布时间】:2018-02-22 13:35:32
【问题描述】:

你能解释一下与 Docker 容器端口有关的一件事吗?

场景: 我创建了一个新的 Dockerfile 和 docker-compose.yml 文件 (https://github.com/fdolsky321/Jenkins_Docker),我使用了 EXPOSE 49005,并将 docker-compose.yml 中的两个端口都配置为 49005。(docker-compose 中的音量设置是否正确? 我使用的是 Windows 10 专业版)。

然后我只是构建并推送它,最后,我使用了 docker-compose up... 但是后来我看到,仍然有默认端口 8080 和 50000,你能解释一下,怎么可能,那里是否仍在使用这些我不想使用的端口?

然后我正在尝试运行此映像,但我无法在任何端口(8080、50000、49005)上打开 jenkins。当我使用 docker run 命令时,它运行良好,但我想使用 docker-compose.yml 文件中使用的端口。

您能否提供任何建议,端口如何在 docker 中工作?

https://imgur.com/a/0KLFs

【问题讨论】:

  • 不要在 dockerfile 中公开它,删除该层。在 docker-compose.yml 中,只需执行49005:8080。在您的 yaml 文件中尝试使用 ports 服务。

标签: docker jenkins docker-compose dockerfile ports


【解决方案1】:

如果您运行docker ps,您将在容器的端口部分看到类似0.0.0.0:49005->8080/tcp 的内容。

如果你使用 docker run 那么你需要做 docker run -p 49005:49005 my-image

如果你使用的是 docker-compose 那么你需要添加

    ports:
      - "49005:49005"

【讨论】:

    【解决方案2】:

    可能这些端口没有映射到运行容器的主机。 docker-compose 文件端口中有一个指令。为了将端口映射到主机,只需指定关联的端口,通过该端口可以从主机访问容器内的目标。例如:

    ports: 
       - 7777:7777 
    

    因此,容器内的 7777 将可以通过主机上的 7777 访问。左侧主机一和右侧容器一。有关详细信息,请参阅文档:https://docs.docker.com/compose/compose-file/#ports
    如果我对您的问题理解不正确,请道歉。

    【讨论】: