Docker
ドッカーのドッカー
サーチ…
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
と、ネットワーク経由でサーバにアクセスするためのポートマッピングも含まれていなければなりません。