Wie zu montieren docker socket als Band in docker-container mit der richtigen Gruppe

Möchte ich ausführen, eine Jenkins-Instanz in einem docker-container.

Ich will Jenkins selbst in der Lage sein sich zu drehen docker-Container als Sklaven zum ausführen von tests.

Scheint es der beste Weg, dies zu tun ist die Verwendung

docker run -v /var/run.docker.sock:/var/run/docker.sock -p 8080:8080 -ti my-jenkins-image

Quelle

Den Dockerfile ich verwende, ist

FROM jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

USER root
RUN apt-get update && apt-get install -y docker.io
RUN usermod -aG docker jenkins
USER jenkins

Wenn ich starten Sie eine bash-session in meiner Ausführung-container und führen docker info auf meinem Bild, das ich bekommen

$ docker info
FATA[0000] Get http:///var/run/docker.sock/v1.18/info: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?

Und wenn ich die bash-Sitzung als root

docker exec -u 0 -ti cocky_mccarthy bash
root@5dbd0efad2b0:/# docker info
Containers: 42
Images: 50
...

Also ich denke, die docker Gruppe ich bin das hinzufügen der Jenkins Benutzer ist die Gruppe für die internen docker damit die Buchse nicht lesbar, ohne sudo. Das ist irgendwie ein problem, wie die Jenkins-Andockfenster-plugin etc. sind nicht zu verwenden sudo.

Wie kann ich montieren Sie die Buchse, so kann es verwendet werden, aus dem Bild ohne sudo?

  • Hast du eine Lösung für dein problem? Ich stehe vor dem gleichen Problem jetzt
  • Meine Lösung ist die änderung der Besitz auf docker.Socke nach container begonnen. docker exec -it -u root jenkins-docker chown jenkins /var/run/docker.sock
Schreibe einen Kommentar