web-dev-qa-db-ja.com

Dockerデーモンアクセスを使用してmacOSでJenkinsをセットアップする方法は?

簡単な手順に従って、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によって行われ、それは単に一致しないと思いますか?

2
Chris

追加 --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

2
Chris