Como configurar o Jenkins no macOS com o acesso ao daemon do Docker?

1

Eu segui as etapas simples para colocar o Jenkins em funcionamento por meio de um contêiner docker: link

Basicamente, tudo que fiz foi executado:

docker run \
  --rm \
  -d \
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

Agora, ao tentar configurar um pipeline dentro do Jenkins, não é possível localizar o deamon do Docker. Saída de erro que recebo do pipeline dentro do Jenkins:

+ docker pull python:3.6.3
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
script returned exit code 1

Isso sugere que não há um daemon do Docker em execução que Jenkins possa ver. A opção: -v /var/run/docker.sock:/var/run/docker.sock na inicialização do contêiner deve ter funcionado, mas não tenho certeza de quais outras etapas de configuração posso estar perdendo aqui?

Estou executando isso em macOS 10.13 e minha instalação do Docker no host parece funcionar bem. Existem alguns pontos de configuração do Jenkins, onde mais informações e instalações do docker podem ser configuradas, mas parece que o padrão deve funcionar?

Por favor, deixe-me saber se estou faltando alguma coisa para obter acesso Jenkins ao daemon do docker.

[UPDATE]

Após mais pesquisas, todos apontavam para as permissões /var/run/docker.sock como a principal fonte para esse tipo de problema. Olhando para este soquete montado, parece que o usuário jenkins não faz parte do grupo correto. Eu estou supondo que o mapeamento do grupo de hosts no container é feito por id e que simplesmente não combina?

    
por Chris 21.11.2017 / 11:36

1 resposta

2

adicione --group-add docker ao comando docker run para garantir que o usuário que está sendo executado dentro do contêiner do docker do jenkins pertença ao grupo de estivadores equivalente em seu host.

docker run \
  --group-add docker \
  --rm \
  -d \
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

O soquete montado: /var/run/docker.sock está causando confusão sobre a qual grupo ele pertence no host e dentro do contêiner de jenkins.

Há alguma discussão nessa questão do GitHub: link

    
por 21.11.2017 / 15:03