Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

412
Vistas
Error de permisos de Docker en Docker

Tengo una ventana acoplable en la configuración de la ventana acoplable para CI. Esencialmente, la máquina tiene un servidor jenkins CI que usa el mismo socket acoplable de la máquina para crear nodos para CI.

Esto funcionaba muy bien hasta que actualicé Docker recientemente. He identificado el problema, pero parece que no puedo encontrar la magia adecuada para que funcione.

 host $ docker exec -it myjenkins bash jenkins@container $ docker ps 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.26/containers/json: dial unix /var/run/docker.sock: connect: permission denied host $ docker exec -it -u root -it myjenkins bash root@container $ docker ps ... docker ps from host container yay! ...

Así que esto es lo que supongo. Tengo acceso al socket de la ventana acoplable del host desde el contenedor, pero parece que no puedo dar permiso al usuario de jenkins.

Agregué el grupo docker y también agregué el usuario jenkins al grupo docker. Pero sigo teniendo el mismo error. He reiniciado un montón de veces, así que no sé qué hacer a continuación.

¿Hay alguna forma de forzar permisos para un usuario en un socket en particular?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Debe asignar el gid del grupo docker en su host al gid de un grupo al que pertenece jenkins dentro de su contenedor. Aquí hay una muestra de mi Dockerfile de cómo construí una imagen esclava de jenkins:

 ARG DOCKER_GID=993 RUN groupadd -g ${DOCKER_GID} docker \ && curl -sSL https://get.docker.com/ | sh \ && apt-get -q autoremove \ && apt-get -q clean -y \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/*.bin RUN useradd -m -d /home/jenkins -s /bin/sh jenkins \ && usermod -aG docker jenkins

El 993 resulta ser el gid de la ventana acoplable en el host en este ejemplo, lo ajustaría para que coincida con su entorno.


Solución del OP: si la reconstrucción no es una posibilidad, puede configurar el grupo acoplable en consecuencia al usar la raíz y agregar el usuario. Si intentó esto antes, es posible que deba eliminar el grupo en el esclavo ( groupdel docker ):

 docker exec -it -u root myjenkins bash container $ groupadd -g 993 docker container $ usermod -aG docker jenkins
over 4 years ago · Santiago Trujillo Denunciar

0

Como se mencionó en otras respuestas, debe asegurarse de que el usuario "jenkins" dentro del contenedor tenga permiso para emitir comandos Docker al motor Docker en el host a través del montaje /var/run/docker.sock .

Una manera fácil de hacer esto es:

 $ docker run --rm -d --group-add $(stat -c '%g' /var/run/docker.sock) -v /var/run/docker.sock:/var/run/docker.sock -P myjenkins

Pero cuidado:

Si su trabajo de Jenkins tiene la necesidad de ejecutar comandos de construcción/ejecución de Docker (por ejemplo, para construir un contenedor), esto no es suficiente. El motivo es que Jenkins en contenedores le pedirá a Docker en el host que implemente un contenedor de agente de Docker y ese contenedor de agente de Docker enfrentará "errores de permiso" similares cuando se conecte al daemon de Docker en el host.

Hay una publicación de blog que describe el problema y la solución para esto en https://blog.nestybox.com/2019/09/29/jenkins.html .

over 4 years ago · Santiago Trujillo Denunciar

0

Personalmente, he tenido que hacer esto:

 sudo gpasswd -a $USER docker

y funcionó

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda