【问题标题】:Error while changing hostname inside docker container更改 docker 容器内的主机名时出错
【发布时间】:2020-02-09 16:12:25
【问题描述】:

我正在尝试使用命令更改运行 centos 的 docker 容器的主机名

hostnamectl set-hostname test.ovirt.org

但它让我回溯了

Could not set property: Failed to execute program /lib64/dbus-1/dbus-daemon-launch-helper: Success

退出代码为 1。

这里是相关的 travis-CI 构建回溯

编辑

我正在运行命令来更改 Travis 构建中的 ansible 任务中的主机名。使用交互模式编辑主机名不是一种选择。

【问题讨论】:

    标签: docker centos ansible travis-ci


    【解决方案1】:

    如果您希望根据您的要求为容器命名,您可以在运行容器时使用参数 --hostname

    # docker run --hostname=my-server -it ubuntu:15.0 /bin/bash
    root@my-server:/# hostname
    my-server
    root@my-server:/# 
    

    EDIT1 : 由于您需要在运行时进行更改,容器需要具有 root 权限才能更改主机名。默认情况下,Docker 容器将具有有限的 root 权限。

    当您尝试更改主机名时,可能会出现以下错误,提示您应该具有 root 权限:

    # docker run -it ubuntu:15.0 /bin/bash
    root@92b712251220:/# hostname
    92b712251220
    root@92b712251220:/# hostname new-server
    hostname: you must be root to change the host name
    root@92b712251220:/# 
    

    当您使用 --privileged 选项运行同一个容器,这意味着使用所有 root 权限运行容器时,您将能够更改主机名:

    # docker run -it --privileged ubuntu:15.0 /bin/bash
    root@08c70ab0c9e3:/# hostname new-server
    root@08c70ab0c9e3:/# hostname
    new-server
    root@08c70ab0c9e3:/# 
    

    理想情况下,使用 --privileged 选项运行容器不是最佳实践,该选项可以完全控制不安全的主机。

    【讨论】:

    • 嘿,谢谢你的回答,但我正在寻找一种方法,在运行 ansible playbook 时我可以在运行时更改主机名
    • 您现在可以通过尝试使用 --privileged 选项来检查,如答案中所述。
    • 您好,稍微编辑了问题细节以提供清晰性,因为我无法使用交互模式。
    【解决方案2】:

    您可能需要启用SYS_ADMIN runtime privilege and capability

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      相关资源
      最近更新 更多