Utente di Jenkins che utilizza docker (contenitore dock interno)

Ho un dockerfile:

FROM jenkins:1.651.1 COPY plugins.txt /usr/share/jenkins/plugins.txt RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt USER root RUN groupadd docker RUN usermod -a -G docker jenkins USER jenkins 

Aggiungo i miei jenkins del gruppo. Quando accedo il mio contenitore:

 [email protected]:/$ docker ps Cannot connect to the Docker daemon. Is the docker daemon running on this host? [email protected]:/$ whoami jenkins 

Questo è il contenuto del mio /etc/group nel mio contenitore

 jenkins:x:1000: docker:x:1001:jenkins 

il mio utente jenkins è nel gruppo docker

 [email protected]:/$ groups jenkins jenkins : jenkins docker 

Che cosa sto facendo di sbagliato? Voglio usare comandi docker con il mio utente jenkins. Sono su Amazon EC2 Container Service.

Così faccio ad avviare un contenitore dalla mia image:

 docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker:ro -v /lib64/libdevmapper.so.1.02:/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02 -v /lib64/libudev.so.0:/usr/lib/x86_64-linux-gnu/libudev.so.0 -p 8080:8080 --name jenkins -u jenkins --privileged=true -t -i my-jenkins:1.0 

Questa è stata la mia "soluzione", ma ha funzionato solo su Ubuntu (non sui miei centi). Dockerfile

 FROM jenkins:1.651.1 USER root RUN apt-get update \ && apt-get install -y apt-transport-https ca-certificates \ && echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list \ && apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \ && apt-get update -y \ && apt-get install -y docker-engine RUN gpasswd -a jenkins docker USER jenkins 

Comando di esecuzione:

 docker run -d -it -v /var/run/docker.sock:/var/run/docker.sock test-jenkins 

Su Ubuntu:

 [email protected]:/$ whoami jenkins [email protected]:/$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c73c683b02d7 test-jenkins "/bin/tini -- /usr/lo" 2 minutes ago Up 2 minutes 8080/tcp, 50000/tcp condescending_wing 

Ha qualcosa a che fare con gid penso: cat /etc/group in container (su ubuntu e centos).

 jenkins:x:1000: docker:x:999:jenkins 

cat /etc/group su Ubuntu (anche 999)

 docker:x:999:ubuntu 

cat /etc/group su Centos (gid diverso)

 docker:x:983:centos 

Probabilmente è una soluzione per questo. Ma avevo solo bisogno di Ubuntu, quindi non andavo più in questo.

Una volta che il contenitore è in esecuzione, puoi "patch" nel contenitore in esecuzione usando diversi utenti

 docker exec -ti -u 0 jenkins bash // root docker exec -ti -u 1 jenkins bash // probably jenkins 

Utilizzando l'utente root, è ansible su jenkins se è necessario passare all'utente jenkins dall'utente root.

Se vuoi eseguire i contenitori per il docker all'interno del tuo contenitore esistente (sembra che sia quello che stai cercando), ricordatevi di avviare il tuo contenitore --privileged con la bandiera --privileged , ad es. Il docker run --privileged ...