Estou usando uma imagem do Docker que foi criada usando o comando USER para usar um usuário não raiz chamado dev
. Dentro de um contêiner, sou "dev", mas quero editar o /etc/hosts
arquivo.
Então eu preciso ser raiz. Estou tentando o comando su, mas sou solicitado a inserir a senha root.
Qual é a senha do usuário root padrão dentro de um contêiner do Docker?
docker exec -u 0 -it mycontainer bash
. (vejaH6
a resposta)Respostas:
Você pode efetuar login no contêiner do Docker usando o usuário raiz (ID = 0) em vez do usuário padrão fornecido ao usar a
-u
opção Por exemploda documentação do Docker
fonte
docker run -u 0 -it mycontainer bash
Por fim, decidi reconstruir minhas imagens do Docker, para alterar a senha de root por algo que saberei.
ou
fonte
Existem algumas maneiras de fazer isso.
Para executar o Docker, substituindo a configuração USER
ou
Faça as permissões de arquivo necessárias, etc., durante a criação da imagem no arquivo Docker
Se todos os pacotes estiverem disponíveis na sua imagem do Linux,
chpasswd
no dockerfile antes do utilitário USER.fonte
Consigo fazê-lo funcionar com o comando abaixo.
fonte
Eu tinha exatamente esse problema de não conseguir fazer o root porque estava executando no contêiner como um usuário não privilegiado.
Mas eu não queria reconstruir uma nova imagem, como sugerem as respostas anteriores.
Em vez disso, descobri que podia acessar o contêiner como root usando o 'nsenter', consulte: https://github.com/jpetazzo/nsenter
Primeiro determine o PID do seu contêiner no host:
Em seguida, use o nsenter para inserir o contêiner como root
fonte
sudo nsenter --target <PID> --mount --uts --ipc --net --pid
fonte
Obtenha um shell do seu contêiner em execução e altere a senha root:
fonte
Para criar / alterar uma senha root em um contêiner em execução
fonte
A senha é 'ubuntu' para o usuário 'ubuntu' (pelo menos no docker para ubuntu: 14.04.03).
NB: 'ubuntu' é criado após a inicialização do contêiner, portanto, se você fizer isso:
Você receberá o prompt raiz diretamente. A partir daí, você pode forçar a alteração da senha do root, confirmar o contêiner e, opcionalmente, marcá-lo (com -f) para o ubuntu: latest como este:
Você deve reconstruir suas dependências eventuais no ubuntu: latest.
fonte
Sugiro que uma solução melhor seja fornecer o
--add-host NAME:IP
argumento para executar o docker ao iniciar o contêiner. Isso atualizará o/etc/hosts/
arquivo sem a necessidade de se tornar root.Caso contrário, você pode substituir a
USER
configuração dando o-u USER
sinalizador paradocker run
. No entanto, eu desaconselharia isso, pois você não deveria realmente mudar as coisas em um contêiner em execução. Em vez disso, faça as alterações em um Dockerfile e crie uma nova imagem.fonte
-u
sinalizador para alterar o usuário. Eu não acho que você pode fazer isso de dentro do contêiner.Você pode usar o comando raiz USER em seu Dockerfile.
fonte
Ao iniciar o contêiner, você será root, mas não saberá o que é o pw da raiz. Para configurá-lo para algo que você conhece, basta usar "passwd root". Faça uma captura instantânea / confirme o contêiner para salvar suas ações.
fonte
Por padrão, os contêineres do docker são executados como o
root
usuário.Se você ainda estiver usando o contêiner, poderá usar o
exit
comando para voltar aoroot
usuário (usuário padrão) em vez de executá-lo novamente.Exemplo -
fonte
tente o seguinte comando para obter o acesso root
fonte
Em alguns casos, você precisa ser capaz de fazer coisas assim com um usuário
sudo
(por exemplo, o aplicativo em execução no contêiner fornece um shell aos usuários). Basta adicionar isso ao Dockerfile:Agora, no usuário de imagem padrão,
user
você poderásudo
a senha definida na linha 3.Veja como gerar o hash da senha
useradd
aqui ou aqui .fonte