我在设置正在运行的 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
那么您无法从-h
docker内部或内部更改主机名。
答案4
https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces描述了一种实现此目的的方法。基本思想是使用docker inspect
获取容器的 pid,然后通过 进入容器的 uts 命名空间nsenter
。hostname
在该命名空间内运行将更改共享该命名空间的 docker 实例的主机名。