web-dev-qa-db-ja.com

Docker Jenkinsコンテナーパイプラインを使用してDockerイメージを構築するときにDockerが見つかりません

Jenkinsをdockerコンテナーとして実行していますが、パイプラインを使用してDockerイメージを構築したいのですが、Jenkinsコンテナーは常にDockerが見つからないことを通知します。

[simple-tdd-pipeline] Running Shell script
+ docker build -t simple-tdd .
/var/jenkins_home/workspace/simple-tdd-pipeline@tmp/durable-
ebc35179/script.sh: 2: /var/jenkins_home/workspace/simple-tdd-
pipeline@tmp/durable-ebc35179/script.sh: docker: not found

Jenkinsイメージを実行する方法は次のとおりです。

docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v 
/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock 
jenkins

JenkinsイメージのDockerFileは次のとおりです。 https://github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dockerfile

17
kitko112

Dockerクライアントがありません。 Dockerfileに次のようにインストールします。

RUN curl -fsSLO https://get.docker.com/builds/Linux/x86_64/docker-17.04.0-ce.tgz \
  && tar xzvf docker-17.04.0-ce.tgz \
  && mv docker/docker /usr/local/bin \
  && rm -r docker docker-17.04.0-ce.tgz

ソース

15
Robert

編集:2018年5月

Guillaume Husta で指摘されているように、この jpetazzoのブログ記事 はこの手法を推奨しません。

この投稿の以前のバージョンは、ホストからコンテナへのbind-mount dockerバイナリを推奨していました。 Docker Engineは(ほぼ)静的ライブラリとして配布されなくなったため、これはもはや信頼できません。

Dockerクライアントは here の説明に従ってコンテナ内にインストールする必要があります。また、jenkinsユーザーはdockerグループに属している必要があるため、次を実行します。

$ docker exec -it -u root my-jenkins /bin/bash
# usermod -aG docker jenkins

最後にmy-jenkinsコンテナを再起動します。

元の答え:

次のようなホストのdocker engineを使用できます @ Adrian Mouat blog article

 docker run -d \
   --name my-jenkins \
   -v /var/jenkins_home:~/.jenkins \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -p 8080:8080 jenkins

これにより、Hostおよびjenkinsコンテナーに複数のdockerエンジンバージョンが存在することを回避できます。

8

Jenkinsインターフェースで「Jenkins /グローバルツール構成の管理」に移動します

次に、「Dockerインストール」までスクロールダウンし、「Add Docker」をクリックします。 "myDocker"のような名前を付けます

「自動的にインストール」と書かれたボックスをチェックしてください。 「インストーラーの追加」をクリックして、「docker.comからダウンロード」を選択します。 。 Dockerバージョンは「最新」のままにします。 [保存]をクリックしてください。

enter image description here

Dockerコマンドを実行する前に、Jenkinsfileに次のステージを追加します。

 stage('Initialize'){
        def dockerHome = tool 'myDocker'
        env.PATH = "${dockerHome}/bin:${env.PATH}"
    }
5
Harry
docker run -d \
--group-add docker \
-v $(pwd)/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
-p 8080:8080 -p 50000:50000 \
jenkins/jenkins:lts

Dockerの実行時にオプション--group-add dockerを追加するだけです。

0
win5do