簡単な手順に従って、JenkinsをDockerコンテナーで稼働させました: https://jenkins.io/doc/book/installing/#downloading-and-running-jenkins-in-docker
基本的に、私がしたのは実行されただけでした:
docker run \
--rm \
-d \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
これで、Jenkins内にパイプラインをセットアップしようとすると、Dockerデーモンが見つかりません。 Jenkins内のパイプラインから取得したエラー出力:
+ docker pull python:3.6.3
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
script returned exit code 1
したがって、これは、Jenkinsが認識できるDockerデーモンが実行されていないことを示しています。オプション:コンテナの起動時の-v /var/run/docker.sock:/var/run/docker.sock
は機能するはずですが、ここで欠落している可能性のある他のセットアップ手順がわかりません。
これをmacOS 10.13
で実行していますが、ホストへのDockerのインストールは正常に機能しているようです。より多くのDocker情報とインストールを構成できるJenkins構成ポイントがいくつかありますが、デフォルトで機能するはずですか?
Jenkinsがdockerデーモンにアクセスするために何か足りないものがあれば教えてください。
[更新]
さらに検索した後、誰もがこの種の問題の主な原因として/var/run/docker.sock
権限を指摘していました。このマウントされたソケットを見ると、jenkins
ユーザーが適切なグループに属していないように見えます。ホストグループからコンテナへのマッピングはidによって行われ、それは単に一致しないと思いますか?
追加 --group-add docker
からdocker run
コマンドを使用して、jenkins dockerコンテナー内で実行しているユーザーが、ホスト上の同等のdockerグループに属していることを確認します。
docker run \
--group-add docker \
--rm \
-d \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
取り付けられたソケット:/var/run/docker.sock
は、ホスト上およびjenkinsコンテナ内のどのグループに属しているかについて混乱を招きます。
このGitHubの問題にはいくつかの議論があります: https://github.com/jenkinsci/docker/issues/26