Изучаю докер 1.8. Я хотел изменить имя хоста контейнера после Я их создаю. Я пытался редактировать /etc/host
внутри контейнера и перезаписывались каждый раз, когда я attach
затем start
изображение. Я попытался отредактировать следующий файл, но имя хоста было перезаписано.
[root@localhost ~]# docker inspect high_blackwell | grep hostname
"HostnamePath": "/var/lib/docker/containers/15b84f7012383b1af2d4c8c6443506cdff3b19cb1d87d3dfdcb10df126c4eec3/hostname",
[root @ localhost ~] #
Ни один из этих ответов не помог мне
Я не уверен, имеете ли вы в виду, что хотите установить имя хоста для нового контейнера или для работающего контейнера. Вы говорите, что хотите сделать это после создания контейнера, но затем вы также говорите, что «запускаете изображение». Если у вас нет start
ed изображение, которое вы еще не создали, контейнер - контейнер - это то, что вы получаете, когда запускаете изображение.
Вы можете установить имя хоста в командной строке:
docker run --rm -h "example.com" -t -i ubuntu bash
# ...
root@example:/# hostname
example.com
Это сложнее. Вы захотите следить за эта проблема с докером но пока он не решен, вы ничего не можете сделать, кроме как редактировать /etc/hosts
Думаю. В hostname
команда не будет работать.
Чтобы изменить имя хоста работающего контейнера, вы можете использовать команду «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
Те, у которых pid 1785, - это мой док-контейнер. Тип пространства имен, который обрабатывает имена хостов, - «uts», поэтому давайте запустим имя хоста в этом пространстве имен:
# nsenter --target 1785 --uts hostname foo
Теперь "hostname" в вашем контейнере должно давать "foo"!