¿Cómo cambio el nombre de host de Docker después de la creación de la imagen?

Estoy aprendiendo Docker 1.8. Quería cambiar el nombre de host del contenedor despues Yo los creo. Traté de editar /etc/host dentro del contenedor y se sobrescribía cada vez que attach entonces start imagen. Intenté editar el siguiente archivo y el nombre de host se sobrescribe.

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

[raíz@localhost ~]#

Ninguna de estas respuestas funcionó para mí

¿Cómo se nombra un contenedor Docker?

No estoy seguro de si quiere decir que desea establecer el nombre de host de un contenedor nuevo o de un contenedor en ejecución. Dices que quieres hacerlo después de crear el contenedor, pero también dices que estás "iniciando la imagen". Si no lo has hecho started la imagen aún no ha creado el contenedor: un contenedor es lo que obtiene cuando inicia una imagen.

Estás creando un nuevo contenedor

Puede establecer el nombre de host en la línea de comandos:

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

Su contenedor ya se está ejecutando

Esto es más difícil. Usted querrá mantener un ojo en este problema de Docker pero hasta que se resuelva, no puedes hacer mucho más que editar /etc/hosts Creo. El hostname el comando no funcionará.

Para cambiar el nombre de host de un contenedor en ejecución, puede usar el comando "nsenter". Sin embargo, tendrá que ser root en el host.

Podemos listar los espacios de nombres en el host con el comando "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

Los que tienen PID 1785 son mi contenedor docker. El tipo de espacio de nombres que maneja los nombres de host es "uts", así que ejecutemos hostname en ese espacio de nombres:

# nsenter --target 1785 --uts hostname foo

Ahora "hostname "en su contenedor debería producir"foo"!

1.Detener contenedor y servicio

sudo docker stop CONTAINER_NAMEsudo service docker stop

2.Editar archivo de configuración (JSON) [Siempre debe hacer una copia de seguridad primero]

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

3.Iniciar contenedor y servicio

sudo service docker startsudo docker start CONTAINER_NAME