Docker を使った Jenkins のインストール

JenkinsBeginner
オンラインで実践に進む

はじめに

この実験では、Docker を使って Jenkins をインストールするプロセスを探求します。Jenkins は、継続的な統合と継続的なデリバリー(CI/CD)プロセスに広く使われる自動化サーバーです。この実験が終わるとき、Docker で Jenkins をセットアップする実践的な経験を得ることができ、将来の DevOps プロジェクトのための堅牢な基礎を提供します。

初心者にとって重要なことは、Docker がコンテナと呼ばれる孤立した環境でアプリケーションをパッケージ化して実行することができるプラットフォームであることを理解することです。この孤立により、アプリケーションが異なるシステム間で一貫して動作することが保証されます。一方、Jenkins は、ソフトウェア開発の一部、特にコードのビルド、テスト、および展開を自動化するのに役立つツールです。

Docker 環境の準備

このステップでは、Docker がシステムに正常にインストールされて実行されていることを確認します。Docker はこの実験にとって不可欠であり、コンテナ内で Jenkins を実行することができ、一貫性のある孤立した環境を提供します。

まず、Docker がインストールされて実行されていることを確認しましょう。ターミナルを開き、次のコマンドを実行します。

docker --version
Docker version command output

このコマンドは、システムにインストールされている 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 ボリュームを理解することは重要です。その理由は以下の通りです。

  1. コンテナのライフサイクルを超えてデータを永続的に保持できます。
  2. 簡単にバックアップと復元ができます。
  3. 必要に応じてコンテナ間で共有できます。

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 つの方法があります。

  1. 仮想環境のトップタブにある + 記号をクリックして新しい Web Service を作成し、ポート 8080 を入力します。

    Creating Jenkins web service tab

    この方法は実験(Lab)環境内で機能し、Jenkins インターフェースを表示する新しいタブを作成します。

  2. VNC デスクトップで Firefox ブラウザを開きます。ブラウザは自動的に http://localhost:8080 に開くため、URL を手動で入力する必要はありません。

    Firefox Jenkins access page

Jenkins の「Unlock Jenkins」ページが表示されるはずです。このセキュリティ対策により、認可されたユーザーのみが Jenkins を設定できるようになります。

この実験(Lab)環境では、デフォルトのユーザー名は admin、パスワードも admin です。

これらの認証情報を「Unlock Jenkins」ページに入力し、「Continue」をクリックします。

Jenkins unlock page credentials

Jenkins のロックを解除した後、プラグインのインストールや管理者ユーザーの作成など、初期設定プロセスに進みます。この実験(Lab)では、迅速に開始するために「Install suggested plugins」オプションを選択できます。

まとめ

この実験では、Docker を使って Jenkins を成功裏にインストールしてセットアップしました。Docker 環境の準備、Jenkins イメージの取得、Jenkins データ用の永続ボリュームの作成、Jenkins コンテナの実行、初期設定のための Jenkins の Web インターフェイスへのアクセスなど、重要な手順を網羅しました。

この実践的な経験は、Docker を使って Jenkins を展開する際の堅牢な基礎を提供しました。これは、現代の DevOps 実践における重要なスキルです。これで、さらに Jenkins を探索し、ビルドジョブを作成し、開発ワークフローに統合する準備ができました。