如何为正在运行的容器指定主机名?

如何为正在运行的容器指定主机名?

我在设置正在运行的 Docker 容器的主机名时遇到了麻烦。我也不明白如何指定主机名图像已启动。

我从下载的图像启动了一个容器:

sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss

但是我忘记通过指定主机名-h;现在容器正在运行,我该如何指定主机名?

答案1

编辑/etc/hostname是需要容器内 ssh 访问权限的一件事。否则,您可以使用-h选项启动容器。

设置主机名和域名:

$ docker run -h foo.bar.baz -i -t ubuntu bash
root@foo:/# hostname
foo
root@foo:/# hostname -d
bar.baz
root@foo:/# hostname -f
foo.bar.baz

答案2

停止容器和服务

sudo docker stop CONTAINER_NAME
sudo service docker stop

编辑配置文件(JSON)[您应该先进行备份]

/var/lib/docker/containers/CONTAINER_ID/config.json

代替

“主机名”:“随便”

“主机名”:“NEW_HOSTNAME”

启动容器和服务

sudo service docker start
sudo docker start CONTAINER_NAME

(您也可以选择附加docker)

sudo docker attach CONTAINER_NAME

可以通过运行以下命令获取有关 Docker 的详细信息(即 CONTAINER_NAME、CONTAINER_ID):

sudo docker ps -a

答案3

如果您使用,--net=host那么您无法从-hdocker内部或内部更改主机名。

https://github.com/docker/docker/issues/5708

答案4

https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces描述了一种实现此目的的方法。基本思想是使用docker inspect获取容器的 pid,然后通过 进入容器的 uts 命名空间nsenterhostname在该命名空间内运行将更改共享该命名空间的 docker 实例的主机名。

相关内容