【问题标题】:How to assign as static port to a container?如何将静态端口分配给容器?
【发布时间】:2013-06-06 09:40:46
【问题描述】:

我想给一个容器分配一个端口,这样每次重启容器后它都能得到相同的端口。

示例: 我有一个容器,里面有一个 Apache。 Apache 在容器内的 80 端口上运行。 现在,启动容器后,docker为容器端口分配一个主机端口,例如:49154 -> 80。但是重启后主机端口会发生变化,具体取决于运行容器的数量。我试图在容器的 config.json 文件中指定端口,但它被覆盖了。

是否可以手动指定主机端口?

在此先致谢并致以最诚挚的问候, 克里斯

【问题讨论】:

    标签: port docker


    【解决方案1】:

    根据 docker.io 文档:https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

    $ sudo docker run -p 80:80 <image> <cmd>
    

    可以使用 EXPOSE 构建命令将默认端口重定向构建到容器中。

    【讨论】:

    • 有没有办法省略容器端口(Docker在EXPOSE中可以找到)只提供主机端口?
    【解决方案2】:

    启动docker时,可以使用'-p'参数。

    docker run -p 80 yourimage apache2 会做你目前拥有的。

    现在,您可以指定 ':' 使此端口成为静态:

    docker run -p :80 -p :443 yourimage apache2

    如果你使用的是带有EXPOSE 指令的Dockerfile,那是一样的:)

    【讨论】:

    • 感谢您的回答。指定完整的映射会更容易,例如: docker run -p 49159:80 指定主机端口是 49159,它连接到容器的端口 80。那可能吗?谢谢!
    • 目前还不可能,但请随时在 github 上打开一个问题以询问此功能:)
    • 现在可以了。
    • 这个答案目前是错误的。选项-p :80 还会在每次运行时随机化主机端口。
    猜你喜欢
    • 2016-10-12
    • 1970-01-01
    • 2013-10-20
    • 2020-11-06
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多