Generally, a container-in-container setup involves linking /var/run/docker.sock
and docker
itself.
For example, in this thread:
docker run --name jenkins --privileged=true -t -i --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/bin/docker -p 8080:8080 jenkins
This is not exactly your case, since you don't need to run Jenkins itself in a "cic" (container in container").
But that illustrates how you would run any container in a container, with docker available in it.
Make sure the user in that container is part of the docker group (if you don't want to use root), as in this jenkins/setup-docker-and-start-jenkins.sh
script
#!/bin/sh
set -e
JUSER="jenkins"
DOCKER_GID=$(ls -aln /var/run/docker.sock | awk '{print $4}')
if ! getent group $DOCKER_GID; then
echo creating docker group $DOCKER_GID
addgroup --gid $DOCKER_GID docker
fi
if ! getent group $GID; then
echo creating $JUSER group $GID
addgroup --gid $GID $JUSER
fi
if ! getent passwd $JUSER; then
echo useradd -N --gid $GID -u $UID $JUSER
useradd -N --gid $GID -u $UID $JUSER
fi
DOCKER_GROUP=$(ls -al /var/run/docker.sock | awk '{print $4}')
if ! id -nG "$JUSER" | grep -qw "$DOCKER_GROUP"; then
adduser $JUSER $DOCKER_GROUP
fi
chown -R $JUSER:$JUSER /var/jenkins_home/
Note that this setup uses tini
to launch Jenkins (as I described in "Jenkins does not run automatically after install in Docker container")
exec su $JUSER -c "/bin/tini -- /usr/local/bin/jenkins.sh"
Again, those scripts are for using Jenkins in "cic".
In your case, you can use those scripts for the containers that your Jenkins will have to run.