Como faço para alterar o nome do host do docker após a criação da imagem?

Estou a aprender o docker 1.8. Eu queria alterar o nome do host do contêiner apos Eu os crio. Tentei editar /etc/host dentro do contêiner e fui substituído toda vez que eu attach entao start imagem. Tentei editar o arquivo a seguir e o nome do Host é substituído.

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

[root @ localhost ~]#

Nenhuma dessas respostas funcionou para mim

Como você nomeia um contêiner docker?

Não tenho certeza se você quer dizer que deseja definir o nome do host de um novo contêiner ou de um contêiner em execução. Você diz que quer fazer isso depois de criar o contêiner, mas também diz que está "iniciando a imagem". Se você não tiver started a imagem que você ainda não criou o contêiner - um contêiner é o que você obtém quando inicia uma imagem.

Você está criando um novo contêiner

Você pode definir o nome do host na linha de comando:

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

Seu contêiner já está em execução

Isso é mais difícil. Você vai querer ficar de olho este problema Docker mas até que seja resolvido, você não pode fazer muito mais do que editar /etc/hosts Acho eu. O hostname o comando não vai funcionar.

Para alterar o nome do host de um contêiner em execução, você pode usar o comando "nsenter". Você terá que ser root no host, no entanto.

Podemos listar os namespaces no host com o 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

Aqueles com pid 1785 São meu contêiner docker. O tipo de namespace que lida com nomes de host é "uts" , então vamos executar o nome do host nesse namespace:

# nsenter --target 1785 --uts hostname foo

Agora "hostname" em seu contêiner deve render "foo"!

1.Pare o contêiner e o serviço

sudo docker stop CONTAINER_NAMEsudo service docker stop

2.Editar Arquivo de configuração (JSON) [você deve sempre fazer backup primeiro]

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

3.Iniciar contêiner e serviço

sudo service docker startsudo docker start CONTAINER_NAME