docker no docker sem modo privilegiado

docker no docker sem modo privilegiado

A última vez que usei o docker no docker para corredores, masrequer modo privilegiado

compor arquivo:

version: '3.7'
services:
  runner:
    image: gitlab/gitlab-runner:latest
    volumes:
      - ./config:/etc/gitlab-runner
      - ./run:/var/run/
#      - /var/run/docker.sock:/var/run/docker.sock

  docker:
    image: docker:dind
    restart: always
    privileged: true # <-- security problems
    volumes:
      - ./run:/var/run/

Eu tenho um PC pessoal. Eu tenho uma equipe do Gitlab que precisa executar docker buildscripts docker-compose upcom o Gitlab CI. Eu realmente quero acelerar o CI. É por isso que compartilho meuhospedarjanela de encaixe comcorredores, agora eles têm cache docker (imagens e assim por diante) e quando um estágio constrói imagem e outro exige, é muito rápido.

Eu tenho o mesmo problema com Jenkins. Preciso compartilhar o docker do host com nós de trabalho.

Da última vez, quis testar a nova abordagem e executar executores com seu próprio docker. Quase não tenho 2 coisas importantes: - limite de recursos (quero compartilhar 7 de 8 núcleos de CPU, 10 de 16 GB de memória, alguns limites de HDD) - segurança

É importante acrescentar: não tenho scripts de CI que exijam GPU, recursos de rede, montagem de alguns dispositivos e assim por diante. Eles geralmente são simples docker builde docker push, às vezes, preciso pegar artefatos docker cp, só isso. Pergunta principal: como fazerexecute o docker no docker sem privilégios de root para hospedar a máquina?

Ambos - o compartilhamento de soquete ou o modo privilegiado fornecem vulnerabilidades às máquinas host, e ter uma máquina virtual (como o VirtualBox ou algo assim) é lento e difícil de fazer, também quero compartilhar recursos e quero aquele dockerpodeuse 10 de 16 GB, mas 10 GB devem estar livres quando não for usado.

Tenho alguns erros não informativos do dind contatiner (antes de falhar) quando o executo com privilégios usuais:

gitlab-runner-docker | mount: permission denied (are you root?)
gitlab-runner-docker | mount: permission denied (are you root?)
gitlab-runner-docker | Could not mount /sys/kernel/security.
gitlab-runner-docker | AppArmor detection and --privileged mode might break.

Que problemas terei se tentar executar o docker no docker sem modo privilegiado? Como fazer isso?

Responder1

bem, em relação ao balanceamento de carga da memória RAM, não posso ajudar, mas você pode executar um docker no docker (dind) sem permissões de sudo adicionando seu usuário atual ao grupo do docker,

Não vejo a segurança dos sockets compartilhados porque perde sua integridade mas recomendo instanciar o dind com o parâmetro o compositor com o parâmetro privilegiado: true

informação relacionada