2017-06-14 110 views
0

我试图使用命令错误而改变搬运工容器内的主机名

hostnamectl set-hostname test.ovirt.org 

改变泊坞窗容器中运行的CentOS的主机名,但它给了我回来的

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

回溯与退出代码1.

这里是相关的travis-CI构建追踪

编辑

我运行的命令更改特拉维斯内部建立一个ansible任务里面的主机名。使用交互模式编辑主机名不会是一种选择。

回答

-1

如果您正在期待根据您的要求命名容器,则可以在运行容器时使用参数--hostname

# docker run --hostname=my-server -it ubuntu:15.0 /bin/bash 
[email protected]:/# hostname 
my-server 
[email protected]:/# 

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

当您尝试更改主机名以下可能会发生错误说你应该有root权限:

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

当你运行与--privileged选项这意味着运行的所有容器相同的容器在root权限,您将能够更改主机名:

# docker run -it --privileged ubuntu:15.0 /bin/bash 
[email protected]:/# hostname new-server 
[email protected]:/# hostname 
new-server 
[email protected]:/# 

理想情况下,不运行带有--privileged选项容器中的最佳实践whic h完全控制不安全的主机。

+0

嘿,谢谢你的答案,但我一直在寻找一种方式,我将能够在运行时更改主机名,而运行ansible剧本 –

+0

现在你检查,通过与--privileged选项试图为解释在答案中。 –

+0

嘿那里,编辑了一些问题的细节,以提供清晰的,因为我不能使用交互模式。 –