【问题标题】:How to use hostname passed as an argument in Dockerfile?如何在 Dockerfile 中使用作为参数传递的主机名?
【发布时间】:2016-10-12 19:45:57
【问题描述】:

我有类似的命令来创建容器:

docker create --name=myname \
    --publish "80:80" \
    --hostname myhostname \
    local/local

并且想使用主机名来为网络服务器生成虚拟主机。

我尝试使用测试命令:

RUN touch ~/aaa-${HOSTNAME}

但得到结果:aaa-719d8d68f3dc 但预期为aaa-myhostname

因此,它使用中间容器环境变量而不是传递一个。

【问题讨论】:

  • 什么是本地/本地,即你的容器基于什么镜像?
  • @cantSleepNow,是的,这是一张图片。
  • :) 当然可以,但是哪个是 ubuntu 基础?软呢帽?某事
  • @cantSleepNow,啊,它基于 CentOS 7。:)
  • cat /etc/hostname 怎么样?

标签: docker environment-variables dockerfile


【解决方案1】:

--hostname 选项设置容器主机名,但不作为环境变量。

如果您希望将其作为环境变量进行访问,请使用 -e hostname=my.host.name 而不是 --hostname。

【讨论】:

    【解决方案2】:

    RUN 指令中的任何内容都发生在中间容器内,因此如果您创建依赖于主机信息的状态,则保存在映像层中的是有关中间容器的信息。

    任何因容器而异的东西都应该在CMDENTRYPOINT 中完成,所以它会在容器运行时执行。您可以将引导脚本作为入口点,该脚本从主机设置状态,然后运行您的应用进程。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2014-05-02
      相关资源
      最近更新 更多