我在正在运行的 docker 容器上设置主机名时遇到问题。我也无法理解如何在启动映像后指定主机名。
我从下载的图像启动了一个容器:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
但我忘了通过-h
;指定主机名 既然容器正在运行,我如何指定主机名?
我在正在运行的 docker 容器上设置主机名时遇到问题。我也无法理解如何在启动映像后指定主机名。
我从下载的图像启动了一个容器:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
但我忘了通过-h
;指定主机名 既然容器正在运行,我如何指定主机名?
编辑
/etc/hostname
是您需要在容器内进行 ssh 访问的一件事。-h
否则,您可以使用选项启动容器。设置主机名和域名:
停止容器和服务
编辑配置文件 (JSON) [你应该先备份]
/var/lib/docker/containers/CONTAINER_ID/config.json
代替
和
启动容器和服务
(您也可以选择附加 docker)
可以通过运行获取有关 docker 的详细信息(即 CONTAINER_NAME、CONTAINER_ID)
如果您使用
--net=host
,则无法-h
从 docker 内部或内部更改主机名。见https://github.com/docker/docker/issues/5708
重新启动容器将是最简单的选择 - 但您也可以编辑 /etc/hostname 并从那里开始。
https://evolvingweb.ca/blog/chang-docker-hostnames-namespaces描述了一种方法来做到这一点。基本思路是使用
docker inspect
获取容器的pid,然后通过 进入容器的uts命名空间nsenter
。在该命名空间内运行hostname
将更改共享该命名空间的 docker 实例的主机名。正如其他一些人指出的那样,可以通过修改
config.v2.json
文件来更改容器。只需确保在编辑文件之前停止 Docker 服务,否则它将被覆盖。这些步骤必须按此顺序完成
修改
/var/lib/docker/containers/CONTAINER_ID/config.v2.json
--文件启动 Docker 服务
这已被证实在 Docker v17.05.0-ce 上对我有用,在使用
--net=host
. 修改/etc/hostname
文件不起作用,文件只是被覆盖。在
查找并设置