我正在学习 docker 1.8。我想在创建容器后更改容器的主机名。我试图编辑/etc/host
容器内,我每次都得到覆盖attach
,然后start
图像。我尝试编辑以下文件,但主机名被覆盖。
[root@localhost ~]# docker inspect high_blackwell | grep hostname
"HostnamePath": "/var/lib/docker/containers/15b84f7012383b1af2d4c8c6443506cdff3b19cb1d87d3dfdcb10df126c4eec3/hostname",
Run Code Online (Sandbox Code Playgroud)
[root@localhost ~]#
这些答案都不适合我
Ale*_*erg 14
我不确定您的意思是要设置新容器或正在运行的容器的主机名。您说您想在创建容器后执行此操作,但随后您还说您正在“启动映像”。如果您尚未start
编辑图像,则您还没有创建容器——容器是您启动图像时获得的。
您可以在命令行上设置主机名:
docker run --rm -h "example.com" -t -i ubuntu bash
# ...
root@example:/# hostname
example.com
Run Code Online (Sandbox Code Playgroud)
这更难。你会想要关注这个 Docker 问题,但在它解决之前,/etc/hosts
我认为除了编辑之外你无能为力。该hostname
命令将不起作用。
小智 10
要更改正在运行的容器的主机名,您可以使用“nsenter”命令。但是,您必须是主机上的 root。
我们可以使用“lsns”命令列出主机上的命名空间:
# lsns
NS TYPE NPROCS PID USER COMMAND
4026531836 pid 73 1 root init
4026531837 user 101 1 root init
4026531838 uts 73 1 root init
4026531839 ipc 73 1 root init
4026531840 mnt 72 1 root init
4026531857 mnt 1 14 root kdevtmpfs
4026531957 net 73 1 root init
4026532300 mnt 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c
4026532301 uts 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c
4026532302 ipc 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c
4026532303 pid 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c
4026532305 net 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c
Run Code Online (Sandbox Code Playgroud)
pid 为 1785 的是我的 docker 容器。处理主机名的命名空间类型是“uts”,所以让我们在该命名空间中运行主机名:
# nsenter --target 1785 --uts hostname foo
Run Code Online (Sandbox Code Playgroud)
现在容器中的“主机名”应该产生“foo”!
归档时间: |
|
查看次数: |
33514 次 |
最近记录: |