Estou tendo problemas para definir o nome do host em um contêiner docker em execução. Também estou tendo problemas para entender como especificar o nome do host depois que a imagem é iniciada.
Iniciei um contêiner a partir de uma imagem que baixei:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
Mas esqueci de especificar o nome do host por meio de -h
; como posso especificar o nome do host agora que o contêiner está em execução?
Editar
/etc/hostname
é uma coisa para a qual você precisa de acesso ssh dentro do contêiner. Caso contrário, você pode girar o contêiner com-h
opção.Para definir os nomes de host e domínio:
Parar contêiner e serviço
Editar arquivo de configuração (JSON) [Você deve fazer backup primeiro]
/var/lib/docker/containers/CONTAINER_ID/config.json
Substituir
com
Iniciar contêiner e serviço
(Opcionalmente, você também pode anexar o docker)
Detalhes sobre janelas de encaixe (ou seja, CONTAINER_NAME, CONTAINER_ID) podem ser obtidos executando
Caso você use
--net=host
, não poderá alterar o nome do host de-h
ou de dentro do docker.Consulte https://github.com/docker/docker/issues/5708
Reiniciar o contêiner seria a opção mais fácil - mas você também pode editar /etc/hostname e partir daí.
https://evolvingweb.ca/blog/ Changing-docker-hostnames-namespaces descreve uma maneira de fazer isso. A ideia básica é usar
docker inspect
para obter o pid do contêiner e, em seguida, inserir o namespace uts do contêiner viansenter
. A execuçãohostname
dentro desse namespace alterará o nome do host para a instância do docker que compartilha esse namespace.Como alguns outros apontaram, isso pode ser alterado para contêineres modificando o
config.v2.json
arquivo.Apenas certifique-se de que o serviço Docker seja interrompido antes que o arquivo seja editado, caso contrário, ele será OVERWRITTEN. As etapas DEVEM ser feitas nesta ordem
Modifique o -
/var/lib/docker/containers/CONTAINER_ID/config.v2.json
- arquivoInicie o serviço Docker
Isso foi confirmado trabalhando para mim no Docker v17.05.0-ce, em um contêiner usando
--net=host
. Modificar o/etc/hostname
arquivo não funciona e o arquivo é apenas sobrescrito.Dentro
encontrar e definir