2016-07-26 8 views
5

現在、Jenkinsと組み合わせてDockerを試して、新しいプロジェクトのCI/CDワークフローを合理化しています。私はDocker 1.12をインストールしたMac上で動作します。Jenkins Dockerスレーブでドッカー画像を作成できない

これは私が何をすべきかです:新しいドッカーサーバーを作成するための

  1. 使用ドッキングウィンドウマシン
  2. 「しかしをインストール
  3. そのサーバ上ジェンキンスインスタンスをスピンアップするために、公式ジェンキンスドッカーの画像を使用してください別のDocker Plugin "と" CloudBees Docker Pipeline "プラグインをインストールします。
  4. この設定でドッカーサーバのIP上記と第三者ドッカーDIND画像tehranian/DIND-ジェンキンススレーブ

を使用して「ドッカークラウド」を追加し、私はこのような非常に単純なパイプラインジョブを実行します:

node('docker') { 
    docker.image('hseeberger/scala-sbt').inside { 
     stage 'Checkout' 
     echo 'We got here!' 
    } 
} 

JenkinsはDockerインスタンスを期待どおりスピンアップしてジョブを実行します。基本的なDockerの設定は期待通りに機能しています。

ただし、ジョブ内のDockerコマンドが失敗します。ログ出力は、このようなものになります。私は解決策のために周りの閲覧時に

[Pipeline] node 
Still waiting to schedule task 
Docker-23ebf3d8dd4f is offline 
Running on Docker-23ebf3d8dd4f in /home/jenkins/workspace/docker-test 
[Pipeline] { 
[Pipeline] sh 
[docker-test] Running shell script 
+ docker inspect -f . hseeberger/scala-sbt 

Cannot connect to the Docker daemon. Is the docker daemon running on this host? 
[Pipeline] sh 
[docker-test] Running shell script 
+ docker pull hseeberger/scala-sbt 
Using default tag: latest 
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? 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 

は今、通常、ドッカーソケットがボリュームとしてコンテナに提供する必要があると述べているが、それはどちらか動作していないように。

一般的な設定が動作しているようだから、JenkinsのプラグインがDockerのスレーブを最初に起動させるのと同じことをスレーブが単に行う必要はないでしょうか?つまり、DockerサーバーのURLを使用して制御しますか?私はこれが非常に一般的なユースケースであると仮定しているので、Jenkins Dockerの奴隷用のDocker画像がなければなりません。私は何が欠けていますか?

+0

JockkinsによってスピンアップされたDockerコンテナが/var/run/docker.sockにあるように、前述のようにドッカーソケットをマウントすることをお勧めします。 Jenkinsによって作成されたDockerコンテナの手順は、一部のユーザーによって実行されます。このユーザーは、マウントされたDockerソケットにアクセスできますか?例えば、 'docker'グループのユーザですか? – wujek

+0

https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/chapter-docker-workflowに従って、 'node( 'docker')'部分が必要ないとは思いません。 html これで問題は解決しません。同じ問題があります。あなたはそれを修正しましたか? – Stretch

答えて

0

実行中のシェルスクリプトでdocker envを設定し、内容をdocker-machine env nodeにする必要があります。

+0

鶏と卵の状況では動作しません。実行中のDockerインストールがなければコマンドは実行されません。 – Lunikon

関連する問題