はじめに
この実験では、Docker を使って Jenkins をインストールするプロセスを探求します。Jenkins は、継続的な統合と継続的なデリバリー(CI/CD)プロセスに広く使われる自動化サーバーです。この実験が終わるとき、Docker で Jenkins をセットアップする実践的な経験を得ることができ、将来の DevOps プロジェクトのための堅牢な基礎を提供します。
初心者にとって重要なことは、Docker がコンテナと呼ばれる孤立した環境でアプリケーションをパッケージ化して実行することができるプラットフォームであることを理解することです。この孤立により、アプリケーションが異なるシステム間で一貫して動作することが保証されます。一方、Jenkins は、ソフトウェア開発の一部、特にコードのビルド、テスト、および展開を自動化するのに役立つツールです。
Linux または LabEx に初めて触れる方は、Linux のクイックスタートまたはLinux コマンドの練習から始めて、体系的に基礎を学ぶことをお勧めします。コース終了後、ここに戻ってスキルを練習することができます。
Docker 環境の準備
このステップでは、Docker がシステムに正常にインストールされて実行されていることを確認します。Docker はこの実験にとって不可欠であり、コンテナ内で Jenkins を実行することができ、一貫性のある孤立した環境を提供します。
まず、Docker がインストールされて実行されていることを確認しましょう。ターミナルを開き、次のコマンドを実行します。
docker --version

このコマンドは、システムにインストールされている Docker のバージョンを表示するはずです。次のような出力が表示されるはずです。
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3
バージョン番号が表示されない場合は、Docker がインストールされていないか、システムの PATH に含まれていない可能性があります。このようなことが起こっても心配しないでください。すぐに対処します。
次に、Docker デーモンが実行されているかどうかを確認しましょう。
sudo systemctl status docker
このコマンドは、Docker サービスの状態を確認します。Docker サービスがアクティブ(実行中)であることを示す出力が表示されるはずです。次のような出力になるかもしれません。
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-09-11 10:00:00 UTC; 2h 30min ago
Docker が実行されていない場合は、サービスが非アクティブまたは失敗している旨のメッセージが表示されます。
Jenkins Docker イメージの取得
このステップでは、Docker Hub から公式の Jenkins Docker イメージをダウンロードします。Docker Hub は、Docker イメージが保管され共有されるクラウドベースのリポジトリです。
Jenkins の最新の LTS(Long Term Support)バージョンを取得するには、次のコマンドを実行します。
docker pull jenkins/jenkins:lts
このコマンドを分解してみましょう。
docker pullは、Docker にイメージをダウンロードするように指示します。jenkins/jenkinsは、イメージの名前(Jenkins プロジェクトによって作成されます)です。:ltsは、一般的により安定している Long Term Support バージョンを指定するタグです。
このコマンドは、Jenkins イメージをローカルマシンにダウンロードします。ダウンロードには、インターネット速度に応じて数分かかる場合があります。イメージを構成するさまざまな層のダウンロード状況を示すプログレスバーが表示されます。
ダウンロードが完了した後、次のコマンドを実行して、イメージがローカルに利用可能であることを確認できます。
docker images
このコマンドは、システム上のすべての Docker イメージを一覧表示します。出力に Jenkins イメージが表示されるはずで、次のようになります。
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins lts 7a7add0bf3da 8 days ago 470MB
Jenkins イメージが表示されない場合は、ダウンロードに失敗した可能性があります。この場合、再度docker pullコマンドを実行してみてください。問題が続く場合は、インターネット接続を確認したり、別のネットワークを使用してみてください。
Jenkins データ用の Docker ボリュームの作成
このステップでは、Jenkins データを永続的に保存するための Docker ボリュームを作成します。これは、Jenkins の設定とビルド履歴を維持するための重要なステップです。
Docker ボリュームは、Docker コンテナによって生成され使用されるデータを永続的に保存する方法を提供します。これは Jenkins にとって特に重要であり、コンテナが停止または削除されても設定、ジョブデータ、およびビルドアーティファクトを保持したいからです。
jenkins-dataという名前の新しいボリュームを作成するには、次のコマンドを実行します。
docker volume create jenkins-data
このコマンドは、Docker に新しいボリュームを作成するように指示します。Docker はこれらのボリュームを管理し、ホストファイルシステムの一部に保存します。
すべての Docker ボリュームを一覧表示することで、ボリュームが作成されたことを確認できます。
docker volume ls
ボリュームの一覧にjenkins-dataが表示されるはずで、次のようになります。
DRIVER VOLUME NAME
local jenkins-data
ボリュームが表示されない場合は、再度作成してみてください。問題が続く場合は、Docker ボリュームを作成するための必要な権限を持っていることを確認してください(ユーザーが docker グループに所属していない場合はsudoを使用する必要がある場合があります)。
Docker ボリュームを理解することは重要です。その理由は以下の通りです。
- コンテナのライフサイクルを超えてデータを永続的に保持できます。
- 簡単にバックアップと復元ができます。
- 必要に応じてコンテナ間で共有できます。
Jenkins Docker コンテナの実行
これで Jenkins イメージとデータ永続化用のボリュームがあるので、Jenkins コンテナを実行できます。このステップでは、実際に Docker コンテナ内で Jenkins を起動し、システム上でアクセス可能にします。
以下の設定でコンテナを実行します。
- コンテナのポート 8080 をホストのポート 8080 にマップ(Web インターフェイス用)
- コンテナのポート 50000 をホストのポート 50000 にマップ(エージェント接続用)
jenkins-dataボリュームをコンテナ内の/var/jenkins_homeにマウント- コンテナをデタッチドモードで実行
Jenkins コンテナを実行するには、次のコマンドを実行します。
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins-lts jenkins/jenkins:lts
このコマンドを分解してみましょう。
docker runは新しいコンテナを作成して実行します。-dはコンテナをデタッチドモード(バックグラウンド)で実行します。-p 8080:8080はコンテナ内のポート 8080 をホスト上のポート 8080 にマップします。-p 50000:50000はコンテナ内のポート 50000 をホスト上のポート 50000 にマップします。-v jenkins-data:/var/jenkins_homeは、Docker ボリュームをコンテナ内の Jenkins ホームディレクトリにマウントします。--name jenkins-ltsはコンテナに簡単に参照できる名前を付けます。jenkins/jenkins:ltsは使用するイメージを指定します。
このコマンドを実行すると、Docker はバックグラウンドで Jenkins コンテナを起動します。コンテナが実行されていることを確認するには、次のコマンドを実行します。
docker ps
このコマンドは、すべての実行中の Docker コンテナを一覧表示します。出力に Jenkins コンテナが表示されるはずで、次のようになります。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
747b6dc7b1af jenkins/jenkins:lts "/usr/bin/tini -- /u…" 4 seconds ago Up 3 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins-lts
Jenkins コンテナが表示されない場合は、起動に失敗した可能性があります。エラーメッセージを確認するには、次のコマンドを使用します。
docker logs jenkins-lts
これにより、コンテナのログが表示され、問題の診断に役立ちます。
Jenkins の Web インターフェイスにアクセスする
Jenkins コンテナが実行されたので、Web インターフェースにアクセスして初期設定を完了できます。このステップでは、Jenkins へのアクセスと初期設定の実行について説明します。
Jenkins Web インターフェースにアクセスするには、2 つの方法があります。
仮想環境のトップタブにある
+記号をクリックして新しいWeb Serviceを作成し、ポート8080を入力します。
この方法は実験(Lab)環境内で機能し、Jenkins インターフェースを表示する新しいタブを作成します。
VNC デスクトップで Firefox ブラウザを開きます。ブラウザは自動的に
http://localhost:8080に開くため、URL を手動で入力する必要はありません。
Jenkins の「Unlock Jenkins」ページが表示されるはずです。このセキュリティ対策により、認可されたユーザーのみが Jenkins を設定できるようになります。
この実験(Lab)環境では、デフォルトのユーザー名は admin、パスワードも admin です。
これらの認証情報を「Unlock Jenkins」ページに入力し、「Continue」をクリックします。

Jenkins のロックを解除した後、プラグインのインストールや管理者ユーザーの作成など、初期設定プロセスに進みます。この実験(Lab)では、迅速に開始するために「Install suggested plugins」オプションを選択できます。
まとめ
この実験では、Docker を使って Jenkins を成功裏にインストールしてセットアップしました。Docker 環境の準備、Jenkins イメージの取得、Jenkins データ用の永続ボリュームの作成、Jenkins コンテナの実行、初期設定のための Jenkins の Web インターフェイスへのアクセスなど、重要な手順を網羅しました。
この実践的な経験は、Docker を使って Jenkins を展開する際の堅牢な基礎を提供しました。これは、現代の DevOps 実践における重要なスキルです。これで、さらに Jenkins を探索し、ビルドジョブを作成し、開発ワークフローに統合する準備ができました。

