2 votos

Docker In Docker Jenkins en Ubuntu - Problema de permiso con docker.sock

Estoy tratando de configurar una Jenkins ventana acoplable imagen similar a la descrita en https://getintodevops.com/blog/the-simple-way-to-run-docker-in-docker-for-ci

Mi Dockerfile se parece a esto:

FROM jenkins/jenkins:lts
USER root
RUN apt-get update && apt-get -y install sudo
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
RUN apt-get install -y apt-transport-https ca-certificates \ 
    curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
RUN add-apt-repository "deb [arch=amd64] \ 
    https://download.docker.com/linux/debian stretch stable"
RUN apt-get update
RUN apt-get install -y docker-ce docker-ce-cli containerd.io
RUN usermod -aG docker jenkins
USER jenkins

Y estoy empezando el contenedor así:

docker run -d -v jenkins_home:/var/jenkins_home \
    -p 8080:8080 -p 50000:50000 \
    -v /var/run/docker.sock:/var/run/docker.sock customjenkins

Sin embargo cuando ejecuto una generación (o exec en el recipiente y hacer docker ps) me sale lo siguiente:

Got permission denied while trying to connect to the Docker daemon socket 
at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/
containers/json: dial unix /var/run/docker.sock: connect: permission denied

La única manera en la que he sido capaz de conseguir que esto funcione es chmod 777 el docker.sock archivo, que parece mal para mí. ¿Hay algún otro paso que me falta o que otra solución puedo seguir?

Host del sistema operativo es Ubuntu 19.04, ventana acoplable versión 19.03.0-beta2, construir c601560

3voto

Fanatique Puntos 600

Usted necesita para ejecutar el comando con sudo:

sudo docker run -d -v jenkins_home:/var/jenkins_home \
    -p 8080:8080 -p 50000:50000 \
    -v /var/run/docker.sock:/var/run/docker.sock customjenkins

De lo contrario, usted no tiene permisos para leer/escribir en el socket, lo cual es completamente normal y esperado. El uso de chmod 777 es de hecho una mala idea, ya que se plantea un problema de seguridad.


Además de utilizar sudo hay otras dos formas sugeridas para utilizar la ventana acoplable:

1. Agregar el usuario a la ventana acoplable grupo:

sudo gpasswd -a $USER docker

Nota: si el grupo ventana acoplable no existe, puede crearlo primero:

sudo groupadd docker

2. El uso de ACL para agregar permisos a tu usuario para utilizar la ventana acoplable socket:

sudo setfacl -m user:$USER:rw /var/run/docker.sock

Puede reemplazar $USER con tu nombre de usuario si lo desea.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: