我在设置正在运行的Docker容器上的主机名时遇到问题。 我也无法理解如何在映像启动后指定主机名。
我从我下载的一个图像开始了一个容器:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
但我忘了通过-h
指定主机名; 我现在怎么能指定容器正在运行的主机名?
编辑/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
重新启动容器将是最简单的select – 但是您也可以编辑/ etc / hostname并从那里开始。
停止容器和服务
sudo docker stop CONTAINER_NAME sudo service docker stop
编辑configuration文件(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
如果你使用--net=host
那么你不能从-h
或--net=host
里面更改主机名。
https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces描述了一种方法来做到这一点。 基本的想法是使用docker inspect
来获取容器的pid,然后通过nsenter
进入容器的uts命名空间。 在该名称空间内运行hostname
名将更改共享该名称空间的docker实例的主机名。
在
/var/lib/docker/containers/CONTAINER/config.json
find并设置
"Config":{"Hostname":"utils","Domainname":"mysite.com", ...}