Como o yum com a Red Hat Network Subscription funciona dentro das imagens do rhel Docker?

10

O Red Hat Enterprise Linux 7 inclui suporte oficial para a execução de contêineres do Docker, e o Red Hat oferece um conjunto de imagens oficiais do rhel Docker. Uma característica interessante dessas imagens é que os pacotes podem ser instalados através da Assinatura do Red Hat Network do host sem precisar executar nenhuma configuração no contêiner.

Para citar https://access.redhat.com/articles/881893#createimage :

"Para a versão atual do Red Hat Docker, a imagem padrão do RHEL 7 Docker que você obtém da Red Hat poderá usar os direitos do RHEL 7 disponíveis no sistema host. Portanto, desde que o host do Docker esteja devidamente assinado e os repositórios sejam Se você precisar obter o software que deseja em seu contêiner (e ter acesso à Internet a partir do host do Docker), poderá instalar pacotes dos repositórios de software RHEL 7 ".

Minha preocupação é que o mecanismo pelo qual isso seja alcançado seja bastante opaco. Ao iniciar um novo contêiner com a imagem rhel7.1, por exemplo, é possível executar yum install foosem sequer configurar as variáveis ​​de ambiente do proxy http. Sem entender esse mecanismo, o administrador do sistema está potencialmente à mercê de interações desconhecidas entre o sistema host, o daemon do Docker e os contêineres em execução. Isso também sugere que o isolamento normal entre o host e o contêiner está de alguma forma comprometido (embora de maneira benigna).

Para colocar um ponto: como esse suporte à assinatura é alcançado e depende da criação personalizada do daemon Docker fornecido pela Red Hat através da Subscription Network?

Leynos
fonte
Obrigado @michael. Infelizmente, não tenho acesso à resposta postada nesse site, pois pessoalmente não tenho uma conta de Assinatura da Red Hat. (A conta que meu empregador usa é mantida por funcionários de outras partes da organização). Vou ver se alguém com acesso relevante na organização pode me fornecer uma cópia desta resposta da KB.
Leynos
@ Michael, você deve postar seu comentário como uma resposta imho.
Bram
@ MichaelHampton Eu tive a chance de ler a resposta no site da Red Hat. Pode ser interessante notar em qualquer resposta publicada aqui que a funcionalidade em questão depende da versão personalizada da Red Hat do daemon Docker.
Leynos

Respostas:

4

A Red Hat carrega um patch dockerchamado de 'segredos', que monta as informações de direitos em contêineres quando são executados.

Você pode ver uma descrição melhor do patch e um link para o PR upstream no repositório projectatomic / docker :

https://github.com/projectatomic/docker/tree/docker-1.13.1-rhel#add-rhel-super-secrets-patchpatch

Observe que você precisará selecionar um dos ramos (o link vai para o ramo 'docker-1.3.1-rhel') para ver todas as informações sobre o patch transportado.

raiva
fonte
E, portanto, se você tentar o Docker CE (que não possui esse caminho) em vez do Docker fornecido pela Red Hat, você não terá as informações de direitos e yumcomandos dentro da sua construção do Docker ou a imagem do Docker falhará?
Raedwald
2

Sabendo como as máquinas virtuais gerenciadas pelo Red Hat Satellite são licenciadas e saindo do comentário da @ Leynos, eu esperaria que houvesse algo semelhante a isso virt-who, que é um serviço que conversa com o host de virtualização (vSphere, KVM, etc) e consulta-o para encontre detalhes de VMs. Em seguida, ele faz as chamadas de API necessárias no Satellite para permitir que a VM use a licença do datacenter do host.

Eu esperaria que o daemon do docker Red Hat forneça algo semelhante, permitindo que o contêiner saiba que está sendo executado em um host do Docker inscrito e, portanto, faça uso dessa assinatura.

Também daqui :

IMPORTANTE: A execução de contêineres com o comando docker, conforme descrito neste tópico, não requer especificamente o registro do sistema RHEL Atomic Host e a conexão de uma assinatura. No entanto, se você deseja executar os comandos yum install dentro de um contêiner, o contêiner deve obter informações válidas de assinatura do RHEL Atomic Host ou isso falhará.

Portanto, há algo no contêiner ou no daemon que pode consultar o host para encontrar informações de assinatura (e provavelmente informações de repo).

shearn89
fonte