Quero atualizar meu /etc/hosts
arquivo durante a "compilação do docker".
Eu adicionei a linha abaixo no Dockerfile, mas não está atualizando o /etc/hosts
arquivo nem dando nenhum erro.
RUN echo "192.168.33.11 mynginx" >> /etc/hosts
Eu preciso atualizar /etc/hosts
. Alguém pode sugerir isso?
docker
dockerfile
hosts
Prakash
fonte
fonte
Respostas:
Com uma versão mais recente do docker, isso poderia ser feito com docker-compose e sua
extra_hosts
diretivaResumindo: modifique
/etc/hosts
seu contêiner ao executá-lo, não ao criá-lo.Com Docker 17.x +, você tem um
docker build --add-host
mencionado abaixo , mas, conforme comentado na edição 34078 e nesta resposta :As soluções mencionadas referem-se ao docker-compose que sugeri acima:
fonte
docket exec -it <container name> /bin/bash
, então atualizar o host do contêiner do docker em / ect / host com seu editor de linha de comando preferido (vim, emacs, nano, echo ''. >> />).Você não pode modificar o arquivo host na imagem usando
echo
naRUN
etapa porque estivador daemon irá manter o arquivo (/ etc / hosts) e seu conteúdo (entrada de hosts) quando você iniciar um recipiente a partir da imagem.No entanto, o seguinte pode ser usado para obter o mesmo:
A chave a ser observada aqui é o uso do
exec
comando, conforme sugere a documentação do docker. O uso de exec tornará o comando java como PID 1 para o contêiner. As interrupções do Docker só respondem a isso.Veja https://docs.docker.com/engine/reference/builder/#entrypoint
fonte
ENTRYPOINT
não é uma instrução para imagem. Ele apenas marca um ponto de entrada quando executamos um contêiner a partir desta imagem, o que significa que a entrada de hosts existe apenas depois que o contêiner está em execução. Não acho que o requisito seja essencial. Deve haver algum mal-entendido.Acho que o docker adicionou recentemente a
--add-host
bandeira à compilação do docker, o que é realmente ótimo.[Editar] Portanto, este recurso foi atualizado em 17.04.0-ce
Para obter mais detalhes sobre como usar
docker build
o--add-host
sinalizador, visite: https://docs.docker.com/edge/engine/reference/commandline/build/fonte
--add-host
recurso está disponível no Docker 12 no CentOS.Uma vez que esta ainda surge como uma primeira resposta no Google, contribuirei com uma possível solução.
O comando obtido a partir daqui funcionou surpreendentemente para mim (Docker 1.13.1, Ubuntu 16.04):
fonte
Se isso for útil para qualquer pessoa, a
HOSTALIASES
variável env funcionou para mim:fonte
Você pode fazer com o seguinte comando no momento de executar o docker
docker run [OPTIONS] --add-host example.com:127.0.0.1 <your-image-name>:<your tag>
Aqui estou mapeando
example.com
para localhost127.0.0.1
e está funcionando.fonte
Estou usando o AWS Elasticbeanstalk + Docker + Supervisord.
Resposta rápida
Basta adicionar algum código
Dockerfile
.fonte
Resposta Completa
hosts
arquivo que deseja adicionar ao contêiner do docker;hosts
arquivo para o contêiner, adicionando a seguinte linha noDockerfile
ENTRYPOINT
ouCMD
ou oCRON
trabalho, incorpore a seguinte linha de comando nele ou pelo menos execute-o dentro do contêiner em execução:Dockerfile
porque a modificação será perdida:fonte
Você pode usar o --add-host opção durante a execução do docker.
Para o seu caso, use: docker run --add-host mynginx: 192.168.33.11 [image_name]: [tag]
Isso irá atualizar seu / etc / hosts
você pode verificar usando os seguintes comandos:
se sh não funcionar para você, você pode tentar bash ou / bin / sh ou / bin / bash
fonte
fonte
Seguir funcionou para mim, montando o arquivo durante a execução do docker em vez da compilação
fonte
Apenas uma resposta rápida para executar seu contêiner usando:
assim que o contêiner estiver aberto:
então
e então você pode
ou:
ou qualquer editor de sua preferência e abri-lo no vim, aqui você pode modificar, digamos, seu ip de inicialização para 0.0.0.0
fonte