jenkins exectue shell docker in slave node without sudo - docker

I`m using jenkins and slave node(ssh connect).
I want to exectue shell.
docker ps
this is error
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
so this slave node connect to ssh (jenkins connect user = ssh connect users) after exec command
docker ps
normal operation...
ssh connection and jenkins slave node(ssh connection) different??
why?? jenkins error???? help me...

Docker Daemon is not started on slave, this is a docker deployment issue. Some tips are here. Please make sure to first manually tryout docker info and docker ps on slave machine to ensure proper docker functioning.

Related

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? Error on Gitlab Cloud CI/CD with self-hosted runners

I am using gitlab-runner version 14.4.0 and docker version 20.10.11 on Ubuntu 18.04.6 LTS
The machine I am using for the runners is a powerful Supermicro server. Our Gitlab CI is on gitlab cloud (SAAS)
I have been receiving the following errors on Build stage jobs:
ERROR: Job failed (system failure): Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (exec.go:66:120s)
Error: Job failed (system failure): Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (docker.go:708:120s)
Preparation failed: adding cache volume: set volume permissions: create permission container for volume "runner-######-project-#####-concurrent-0-cache-##############": Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (linux_set.go:90:120s)
ERROR: Job failed (system failure): prepare environment: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (docker.go:708:120s). Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information
The solutions I have tried so far:
Added multi pull policy: pull_policy = ["always", "if-not-present"]
in config.toml for all runners
Gave permission to gitlab-runner user
for docker and sudo groups
Tried chmod 666 /var/run/docker.sock
systemctl docker enable & systemctl docker start
restarted gitlab-runner and reloaded daemon
Fresh installed the machine from scratch with Ubuntu 18.04.6 LTS, latest docker and gitlab-runner
Nothing seemed to have solved the issue. Usually just restarting the jobs after the error gets the jobs running. But that is not a solution.
I am new to this and any help is appreciated!
Thank you
The issue you're running into is that you're attempting to use the docker socket to build a container without actually exposing the docker socket inside your executor. You have three options for how to solve this issue:
Map the docker socket into the runner. To do this, where you're specifying volumes, add /var/run/docker.sock:/var/run/docker.sock to the array of mapped volumes.
Use docker-in-docker with a privileged container, which doesn't require you to map the docker socket, but requires you to be familiar with how DIND works and to follow the instructions here: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-the-docker-executor-with-the-docker-image-docker-in-docker
Use something to build your container that doesn't require a docker socket. I'd highly recommend using Kaniko to build your docker container - it tends to be faster than docker and you can ignore the use of the docker socket altogether (which makes your builds more secure too): https://docs.gitlab.com/ee/ci/docker/using_kaniko.html#building-a-docker-image-with-kaniko

jenkins as docker container refused to connect to docker daemon in ubuntu

I'm running jenkins in docker container and docker daemon on same ubuntu machine, had a issue to connect to docker daemon.
check with netstat and telnet the connection is already running and connected.
i did refer to this and few more but still no luck, really need an advise on this.
https://www.jenkins.io/doc/book/installing/docker/
Jenkins: Can't connect to Docker daemon

Is there any configuration to run docker inside a jenkins container?

I am trying to build an image with docker and then upload it to the docker hub, after passing the quality tests I receive the following error: docker: not found, how can I communicate my docker service (localhost) with the container of jenkins.
Important: I have docker desktop installed locally and I have installed jenkins in a local container also in windows 10 pro.
Error: https://imgur.com/q1SrKGe
Pipeline: https://imgur.com/nQWL1HR
You have 2 options to do this:
Install Docker inside your Jenkins Container and also add a bind mount for the Docker socket from your host. Otherwise your Docker Daemon inside your Container wont work. On Linux this socket is /var/run/docker.sock, so the bind mount would look like -v /var/run/docker.sock:/var/run/docker.sock.
Use a different slave agent for the Building Image Stage where you have docker installed. For e.g. you could use Docker-in-Docker (https://hub.docker.com/_/docker) as a Slave Agent for Jenkins (connected via ssh) and run your docker build inside this slave agent.

Cannot connect to the Docker daemon on TeamCity build agent in AWS

I've got build agent machine on Amazon Linux AMI. It has docker container jetbrains/teamcity-agent:latest. I can see build agent in TeamCity panel.
When I'm trying to run build with docker build/push commands I'm getting this error
Cannot login to registry docker.io (new); cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?; exit code 1 (Step: docker build (Docker))
What's wrong with teamcity-agent?
I guess that the jetbrains/teamcity-agent:latest will be running as a user that does not have docker permissions. Either the user that runs the commands in this image needs to be added to the group docker, or via ACLs be given permission to the docker socket /var/run/docker.sock. Note that this is root-equivalent.

Jenkins: running docker commands on a docker slave

I'm using the Kubernetes Jenkins plugin to orchestrate jenkins slaves
I want to run all the jobs in Docker (build docker images and execute tests/builds in docker).
example jenkins job:
docker run -e NEXUS_USERNAME=${NEXUS_USERNAME} -e NEXUS_PASSWORD=${NEXUS_PASSWORD} common-dropwizard:latest mvn deploy
I am using the jenkinsci/jnlp-slave from here: https://hub.docker.com/r/jenkinsci/jnlp-slave/
Unfortunately, the slave image doesn't appear to support running docker. My question is what is the best approach to accomplish this?
thanks
You need to install docker client and mount the docker socket so you can access the Docker host. Then you can interact with that Docker host
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
https://github.com/jenkinsci/docker-workflow-plugin/tree/master/demo

Resources