サーチ…


Dockerを使用したJenkins CIコンテナ

この章では、ホストのDockerインストール(Docker Daemon)にDockerコマンドを送信することができる、Jenkins内部でDocker Containerを設定する方法について説明します。 DockerでDockerを効果的に使用するこれを実現するには、公式のJenkins Docker Imageの任意のバージョンに基づいたカスタムDocker Imageを構築する必要があります。 Dockerfile(画像の作成方法)は次のようになります。

FROM jenkins

USER root

RUN cd /usr/local/bin && \
curl https://master.dockerproject.org/linux/amd64/docker > docker  && \
chmod +x docker  && \
groupadd -g 999 docker && \
usermod -a -G docker jenkins
    
USER Jenkins

このDockerfileは、このクライアントがDockerデーモンと通信するために使用されるDockerクライアントバイナリを含むImageを作成します。この場合、ホストのDockerデーモン。このファイルのRUNステートメントは、UID 999を持つUNIXユーザーグループも作成し、ユーザーJenkinsを追加します。なぜこれが必要なのかについては、後の章で説明します。このImageでは、Dockerコマンドを使用できるJenkinsサーバーを実行できますが、このイメージを実行するだけで、イメージ内にインストールされたDockerクライアントはホストのDockerデーモンと通信できません。これら2つのコンポーネントは、UNIXソケット/var/run/docker.sock介して通信/var/run/docker.sockます。 Unixでは、これは他のすべてのものと同様のファイルなので、Jenkins Container内に簡単にマウントできます。これは、コマンドdocker run -v /var/run/docker.sock:/var/run/docker.sock --name jenkins MY_CUSTOM_IMAGE_NAMEます。しかし、このマウントされたファイルはdocker docker:rootによって所有されていますdocker:rootそのため、Dockerfileはよく知られているUIDでこのグループを作成し、Jenkinsユーザーを追加します。今、Jenkins Containerは実際にDockerを実行して使用することができます。 -v jenkins_home:/var/jenkins_homeは、Jenkins_homeディレクトリをバックアップする-v jenkins_home:/var/jenkins_homeと、ネットワーク経由でサーバにアクセスするためのポートマッピングも含まれていなければなりません。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow