Как мне изменить имя хоста docker после создания образа?

Я изучаю docker 1.8. Я хотел изменить имя хоста контейнера после Я создаю их. Я попытался отредактировать /etc/host внутри контейнера и перезаписывался каждый раз, когда я attach затем start изображение. Я попытался отредактировать следующий файл, и имя хоста было перезаписано.

[root@localhost ~]# docker inspect high_blackwell | grep hostname"HostnamePath": "/var/lib/docker/containers/15b84f7012383b1af2d4c8c6443506cdff3b19cb1d87d3dfdcb10df126c4eec3/hostname",

[root@localhost ~]#

Ни один из этих ответов не сработал для меня

Как вы называете контейнер docker?

Я не уверен, имеете ли вы в виду, что хотите задать имя хоста нового контейнера или запущенного контейнера. Вы говорите, что хотите сделать это после создания контейнера, но затем вы также говорите, что "запускаете изображение". Если вы этого не сделали startотредактируйте изображение, вы еще не создали контейнер - контейнер - это то, что вы получаете, когда запускаете изображение.

Вы создаете новый контейнер

Вы можете задать имя хоста в командной строке:

docker run --rm -h "example.com" -t -i ubuntu bash# ...root@example:/# hostnameexample.com

Ваш контейнер уже запущен

Это гораздо сложнее. Вам нужно будет следить за эта проблема с докером но пока это не будет решено, вы не можете сделать ничего большего, кроме редактирования /etc/hosts Я думаю. То hostname команда не сработает.

Чтобы изменить имя хоста запущенного контейнера, вы можете использовать команду "nsenter". Однако вам придется иметь root-права на хосте.

Мы можем перечислить пространства имен на хосте с помощью команды "lsns":

# lsns        NS TYPE  NPROCS   PID USER COMMAND4026531836 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 kdevtmpfs4026531957 net       73     1 root init      4026532300 mnt       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532301 uts       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532302 ipc       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532303 pid       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532305 net       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c

Те, что с pid 1785, - это мой контейнер docker. Тип пространства имен, который обрабатывает имена хостов, - "uts", поэтому давайте запустим hostname в этом пространстве имен:

# nsenter --target 1785 --uts hostname foo

Теперь "имя хоста" в вашем контейнере должно выдавать "foo"!

1.Остановите контейнер и обслуживание

sudo docker stop CONTAINER_NAMEsudo service docker stop

2.Отредактируйте конфигурационный файл (JSON) [Вы всегда должны сначала создавать резервную копию]

    /var/lib/docker/containers/CONTAINER_ID/config.jsonReplace    "Hostname":"WHATEVER"with    "Hostname":"NEW_HOSTNAME"

3.Запустите контейнер и обслуживание

sudo service docker startsudo docker start CONTAINER_NAME