[Jenkins]Dockerで始めるまで


省電力CPUですら、マルチコアが当たり前な今の時代Docker上でもサクサク動く。外部公開しないなら、Dockerがお勧め。
インフラも含めてアプリ化されている感じで楽

(個人的にはしないけど)外部公開する場合は…Jenkinsに限らず、Dockerがファイアウォールを回避する形でポートに穴を開けまくるので、nginxなどのリバースプロキシやインターネット接続用にNATなど、ゲートを設けておく。

タスクリスト

  • イメージをカスタマイズして取得する
  • イメージを取得する
  • コンテナを起動する
  • 初回のログインをする

イメージをカスタマイズして取得する

デフォルトの設定を変えたい場合はDockerfileに書いておく。
変えなくて良いなら、ここはスキップで良い。

FROM jenkins/jenkins:<TAG>
ENV JENKINS_SLAVE_AGENT_PORT <PORT>

https://github.com/jenkinsci/docker/blob/master/README.md

Jenkinsは分散ビルドができるので、Jenkinsそのもの(マスター)ではなく、ビルドするノード(スレーブ)の都合も考えながら決める。

TAGはltsかlts-jdk11でよい。
ltsはJDK8ベース、lts-jdk11はJDK11ベース。
選ぶ基準としては、スレーブ側がJDK8を使うかどうか。
使う場合はltsを選ぶ。
lts-jdk11を使った場合、スレーブ(agent.jar)を起動する段階でUnsupportedClassVersionErrorが発生する。

JENKINS_SLAVE_AGENT_PORTはデフォルトの50000から変える場合は書く。

その後、ビルド。

docker build -t <TAG> <PATH>

PATHはDockerfileの場所。カレントなら./で良い。

TAGはjenkins:ltsなど、後から分かるように付けておく。
公式にjenkinsがあったりするけど、廃止されているので被っても気にする必要はない。

イメージを取得する

設定を変えずに、そのまま使いたい場合。
カスタマイズして取得している場合はスキップで良い。

docker pull jenkins/jenkins:<TAG>

TAGはカスタマイズと同じくスレーブ都合で選ぶ。

コンテナを起動する

docker run -d --name <NAME> -p <HTTP PORT>:8080 -p <SLAVE PORT>:<SLAVE PORT> <IMAGE ID>

NAMEはコンテナの名前。jenkins-1など任意で。

HTTP PORTは接続ポート番号。Docker内で8080に変換される。
http://<IP>:12345/にアクセスした場合に接続できるようにしたい場合は、-p 12345:8080を指定する。

SLAVE PORTはデフォルトなら50000、カスタマイズしていた場合はそのポート番号を入力。

初回のログインをする

初期パスワードは起動時ログの*が大量に出ているあたりに書いてある。

docker logs <CONTAINER ID>

またはコンテナに入って中身を表示。

docker exec -it <CONTAINER ID> /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword

初期パスワードはインストール後、削除される模様。
これ以降はDockerならではの要素がないので、ここまで。

,