【问题标题】:Can I bind a port while building a docker image?我可以在构建 docker 映像时绑定端口吗?
【发布时间】:2016-12-20 22:10:04
【问题描述】:

我想在从这个容器中构建一个 docker 容器时运行 certbot-auto 客户端,因此我需要端口 443 才能被外界访问。

有什么方法可以在构建 docker 映像时将端口绑定到主机?

【问题讨论】:

  • 为什么在构建镜像而不是运行容器时需要绑定端口?
  • 因为我希望 certbot 在构建映像时获取证书,而不是在运行容器时。

标签: docker certbot


【解决方案1】:

简短的回答,不。

该选项不作为 docker build 的一部分,并且构建不应该挂起等待外部连接。它们还应该被设计为在任何开发人员工作站、外部托管的构建服务器以及介于两者之间的所有东西上运行.

更长的答案,我认为你走错了路。将独特的容器特定数据注入到镜像中会创建一些与 docker 镜像的典型模式背道而驰的东西。与其尝试将证书注入到您的镜像中,不如让它作为容器入口点的一部分执行此操作,如果您需要持久性,请将结果存储在一个卷中,以便您可以在下次启动时跳过该步骤。

【讨论】:

  • 这或多或少是我所做的。我想在构建时运行 certbot,因为它需要 ages 来安装所有东西(它在树莓派上运行)。 --os-packages-only 没有解决这个问题。 G。它不安装 python 包。所以我在构建时运行它一次,如果它失败(并且我使用this nifty trick 让 docker 忽略错误)至少一切都设置好了。然后我在执行时再次运行它,它几乎立即生成证书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 2020-09-14
  • 2016-02-02
  • 1970-01-01
  • 2016-10-13
相关资源
最近更新 更多