更改docker容器内的hostname时出错

时间:2017-06-14 13:31:55

标签: docker centos ansible travis-ci

我正在尝试使用命令

更改运行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任务中的主机名。使用交互模式编辑主机名不是一个选项。

2 个答案:

答案 0 :(得分: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选项运行容器并不是最好的做法,它可以完全控制不受保护的主机。

答案 1 :(得分:0)

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