hub - jenkins with docker
Jenkins: no se puede conectar con el demonio Docker (4)
Estoy ejecutando a Jenkins y Docker en una máquina CentOS. Tengo un trabajo de Jenkins que atrae a un representante de Github y crea una imagen de Docker. Cuando intento ejecutar el trabajo, aparece el error:
+ docker build -t myProject . Cannot connect to the Docker daemon. Is the docker daemon running on this host? Build step ''Execute shell'' marked build as failure Finished: FAILURE
Esto ocurre aunque haya agregado jenkins a mi grupo de usuarios de la sudo usermod -aG docker jenkins
mediante sudo usermod -aG docker jenkins
y reinicié mi máquina. ¿Cómo puedo solucionar esto?
Por cierto, si intenta cambiar el comando a sudo docker build -t myProject .
Acabo de recibir el error sudo: sorry, you must have a tty to run sudo
@lvthillo, tu respuesta es buena, pero no es suficiente. También es necesario crear el grupo docker. Consulte los pasos posteriores a la instalación de Docker Manage Docker como usuario no root https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user
para agregar el usuario que ejecuta jenkins al grupo docker.
Por ejemplo, si ejecuta el servidor Jenkins bajo el usuario jenkins
:
Paso 1: Crear un grupo Docker
sudo groupadd docker
Paso 2: agrega tu usuario al grupo docker
:
sudo usermod -aG docker jenkins
Paso 3: Cierre la sesión y vuelva a iniciarla como jenkins, luego pruebe:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
El grupo de docker
recibe un tratamiento especial por parte del demonio docker al inicio solo para este propósito. Cualquier usuario en ese grupo ahora puede llamar a la ventana acoplable sin sudo. Usa esto con cuidado.
https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
Después de la instalación de Jenkins y Docker. Agregar usuario de jenkins a dockergroup (como hiciste tú)
sudo gpasswd -a jenkins docker
Edita el siguiente archivo
vi /usr/lib/systemd/system/docker.service
Y edita esta regla para exponer la API:
ExecStart=/usr/bin/docker daemon -H unix:// -H tcp://localhost:2375
Ahora es el momento de recargar y reiniciar tu demonio Docker
systemctl daemon-reload
systemctl restart docker
Luego reinicié jenkins y pude realizar comandos de docker como usuario de jenkins en mis trabajos de jenkins
sudo service jenkins restart
Otra opción es apuntar su host de Jenkins docker a ''unix: ///var/run/docker.sock''
Esto es en lugar de ejecutar el host de docker real y abrirlo.
Tuve el mismo problema con Jenkins.
Lo arreglé agregando /var/run/docker.sock:/var/run/docker.sock en docker-compose.yml:
jenkins:
container_name: jenkins
build: "jenkins/"
ports:
- "8080:8080"
environment:
- JAVA_OPTS:-Djava.awt.headless=true
volumes:
- /var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock