Docker コンテナーで Jenkins インスタンスを実行したいと考えています。
Jenkins 自体が docker コンテナをスレーブとしてスピンアップしてテストを実行できるようにしたいと考えています。
これを行う最良の方法は、
docker run -v /var/run.docker.sock:/var/run/docker.sock -p 8080:8080 -ti my-jenkins-image
Dockerfile
私が使っているのは
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
実行中のコンテナーで bash セッションを開始docker info
し、イメージで実行すると、
$ 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?
そして、bash セッションを root として実行すると
docker exec -u 0 -ti cocky_mccarthy bash
root@5dbd0efad2b0:/# docker info
Containers: 42
Images: 50
...
docker
したがって、Jenkins ユーザーを追加するグループは、内部ドッカーのグループであると推測されるため、ソケットがないと読み取れませんsudo
。Jenkins docker プラグインなどが使用するように設定されていないため、これは一種の問題sudo
です。
イメージから使用できるようにソケットをマウントするにはどうすればよいsudo
ですか?