Existe alguma maneira de registrar uma máquina inteira / daemon do Docker em um registro?
Tudo o que vejo sobre o login do docker e vários ajudantes de credenciais proprietárias ~/.docker/config.json
, ou seja, é por usuário.
Tenho uma situação em que gostaria de extrair imagens de um registro privado; várias pessoas têm acesso sudo arbitrário nessas máquinas e devem poder usar o Docker em nosso registro.
Como o acesso ao Docker deve ser lido como acesso root a uma máquina de qualquer maneira (ou seja, as credenciais do usuário não são mutuamente seguras se puderem executar o Docker), e o acesso sudo é o mesmo, mas diretamente, gostaria de ir direto ao ponto e registrar toda a máquina sem que todos os usuários tenham que pular obstáculos.
Eu poderia fornecer um arquivo que todos pudessem vincular ao seu config.json
, mas eu preferiria que ele fosse cuidado desde o primeiro login em cada máquina.
Três opções vêm à mente:
Não torne a imagem privada e, em vez disso, permita que qualquer pessoa extraia a imagem que pode acessar o servidor de registro. Isso é bastante comum em ambientes, pois a imagem deve conter apenas as bibliotecas e binários para executar o aplicativo, não arquivos de configuração, segredos ou dados, que seriam injetados em tempo de execução ou armazenados em um volume.
Se todos tiverem acesso ao sudo, execute os comandos do docker do sudo, incluindo o login. As credenciais serão armazenadas sob o usuário root
~/.docker/config.json
Faça seu próprio auxiliar de credencial que apenas envia o login para o host. A interface auxiliar de credenciais é bastante simples, 4 operações (armazenar, obter, listar, apagar) que podem ser implementadas em um script de shell. E para logins, você provavelmente só precisaria da operação get.
Esse script auxiliar de credencial pode se parecer com um script chamado
docker-credential-your-helper
(ondeyour-helper
pode ser um nome de sua escolha):Torne esse arquivo executável e coloque-o no caminho. Então cada usuário
~/.docker/config.json
teria uma entrada auxiliar de credencial (observe quedocker-credential-
não está incluído neste arquivo, apenas a parte do nome do arquivo depois disso):