GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

ボリュームでDockerComposeを使用してDockerでJenkinsを実行する方法

DockerでJenkinsを実行したいが、ボリュームを使用するのか、データをコンテナー化したままにするのかわからない場合は、 Jenkinsがコンテナ化されている場合、データをどのようにバックアップしますか?コンテナ全体をバックアップする必要がありますか?情報はコンテナの外部に保持できますか?また、その方法は?ボリュームでDockerComposeを使用すると、Dockerコンテナが壊れた場合でもJenkinsデータを安全に保つことができます。

データのバックアップとは別に、Dockerボリュームを使用すると、複数のコンテナー間でJenkinsデータを共有することもできます。

この記事では、DockerとDockerComposeを使用してJenkinsを実行する方法を学習するためです。 Dockerコンテナの内外でJenkinsデータを見つけてバックアップする方法を学びます。

要件

この記事には多くの学習例があります。フォローする場合は、次のものが必要です。

  • Dockerを搭載したコンピューター およびDockerCompose インストールされています。この記事のデモは、 Ubuntu Server 20.04で行われます。 。必要に応じて、WindowsまたはmacOSでDockerを使用できます。

この記事では、DockerとDockerComposeをインストールしてセットアップする方法については説明していません。公式のDockerドキュメントを参照してください。 ATAブログには、Dockerに関連する記事も多数あります。 あなたも読みたいと思うかもしれません。

DockerでJenkinsを実行する

DockerでJenkinsインスタンスを実行するには、最初にリポジトリからイメージをプルする必要があります。この例では、Jenkinsイメージは Docker Hubから取得されます。 。コンテナを作成する前に、最初にイメージをダウンロードするオプションがあります。または、コンテナを実行して、Dockerにその場でイメージをダウンロードさせることもできます。

以下のコマンドは、 docker runを使用してJenkinsコンテナを実行します 指図。 --name [NAME] オプションは、Dockerコンテナに名前を割り当てる場所です。コンテナ名が指定されていない場合、Dockerはランダムな名前をコンテナに割り当てます。

-p [host-port:container-port] オプションとは、コンテナ内の1つまたは複数のポートをホストコンピュータに公開することを意味します。以下のコードでは、ポート8080と50000は、同じポート番号を使用してDockerホストに公開されています。

最後に、jenkins/jenkins:lts 実行するコンテナがjenkins:ltsを使用することを意味します JenkinsリポジトリからのDockerイメージ 。値を変更できますname およびホストポート 必要に応じて番号を付けますが、コンテナは変更しないでください ポート番号。

以下のコードをコピーして、端末で実行してください。

docker run --name my-jenkins-1 -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

上記のコマンドを実行した後、Dockerは新しいコンテナーの作成を開始します。 Jenkinsコンテナが実行されたら、端末に表示される初期管理者パスワードをメモします。管理者パスワードは、Jenkinsの初期設定時に必要です。

Jenkinsの初期設定の完了

Jenkinsコンテナが実行状態に入ると、Jenkins管理ページにアクセスできるようになります。コンテナの作成に使用したコマンドを思い出すと、ポート番号は8080です。したがって、Jenkinsインスタンスにアクセスするには、 HTTP:// localhost:8080に移動します。 。

以下に示すように、ジェンキンスのロックを解除 このページでは、初期管理者パスワードを入力する必要があります。以前に初期管理者パスワードをコピーしておく必要があります。 管理者パスワードにパスワードを入力します ボックスをクリックし、続行をクリックします 。

ジェンキンスのカスタマイズについて ページには、推奨プラグインをインストールするオプションがあります 。これらの推奨プラグインは、Jenkinsコミュニティが通常インストールするプラグインです。インストールするプラグインのセットを事前に選択している場合は、インストールするプラグインを選択を選択します オプション。

簡単にするために、推奨プラグインをインストール この例で選択されているオプションです。

プラグインがインストールされ、インストールが完了するまで待つことができます。以下に示すように、14個の推奨プラグインがインストールされています。推奨されるプラグインの数は、時間の経過とともに増減する可能性があります。 Jenkinsインスタンスをインストールした時点で、推奨されるプラグインはすでに異なっている可能性があります。

プラグインのインストールが完了するとすぐに、最初の管理者ユーザーの作成が表示されます。 ページ。このページでは、最初のJenkins管理者アカウントを作成します。必要に応じてすべてのボックスに入力し、保存して続行をクリックします。 作成したばかりの管理者クレデンシャルを忘れないでください。

インスタンス構成について ページは、Jenkins管理ページのURLを変更できる場所です。 URL値は通常、Jenkinsユーザーがアクセスする実際のURLになります。この例では、デフォルト値のhttp:// localhost:8080のままにして、保存して終了をクリックします。 。

最終セットアップページに、Jenkinsのセットアップが完了したことの確認が表示されます。 Jenkinsの使用を開始をクリックします 。

Welcome to Jenkinsが表示されたら 以下に示すように、ページでJenkinsのインストールが完了しました。この時点で、Jenkinsの構成と新しいアイテムまたはプロジェクトの作成を開始できます。

コンテナ内のJenkinsデータの検索

前のセクションでは、Jenkinsのインスタンスを実行するためのDockerコンテナを作成しました。 Dockerコンテナーは、コンピューター上の他のすべてのものと同様に、破損する可能性があります。何らかの理由でコンテナが使用できなくなった場合、Jenkinsデータも失われます。

Jenkinsのデータ配置をよりよく理解するために、以下のコードでは docker execを使用しています。 コマンド / var / jenkins_homeの内容を一覧表示します 。この例のDockerコンテナ名はmy-jenkins-1です。

docker exec my-jenkins-1 ls -l /var/jenkins_home

上記のコマンドを実行した結果を以下に示します。 / var / jenkins_homeの内容 ディレクトリが一覧表示されます。 / var / jenkins_home ディレクトリには、設定、ユーザー、プラグイン、その他の重要なアイテムが含まれています。

コンテナからホストへのJenkinsデータのバックアップ

この時点で、Jenkinsデータがコンテナ内にあることを確認しました。 Jenkinsデータをコンテナからホストにコピーする必要があります。そして、Jenkinsデータがコンテナから出たら、バックアップを取ることができます。

DockerにDockerコンテナーとDockerホスト間でファイルをコピーするためのサポートが組み込まれているのは良いことです。コマンドdocker cp <container id>:/path/in/container /path/in/hostを使用する

以下の例では、docker cpを使用しています。 my-jenkins-1コンテナのデータをDockerホストの場所にコピーするコマンド。このコマンドを正常に実行するために、コンテナが実行されている必要はないことに注意してください。

docker cp my-jenkins-1:/var/jenkins_home ~/jenkins_backup

以下のデモは、上記のコマンドの動作を示しています。ご覧のとおり、宛先ディレクトリはコマンドによって自動的に作成されます。

コンテナからJenkinsデータを抽出したので、フォルダ全体を圧縮してアーカイブできます。 Jenkinsに変更を加えるたびに、同じタスクを実行する必要がある場合があります。

ボリュームマウントを使用してDockerでJenkinsを実行する

Dockerコンテナの外部でJenkinsデータを永続的かつ一貫性のあるものにするには、Dockerボリュームを使用する必要があります。 。

前のセクションで説明したように、Jenkins構成ファイルはDockerコンテナ内の / var / jenkins_homeにあります。 。 Jenkinsファイルがコンテナの外部に確実に保存されるようにするには、-vを使用できます。 docker runのオプション コマンド。

以下のコードは、 my-jenkins-2という名前の新しいDockerコンテナを作成します。 。ポート8080および50000はホストに公開されます。さらに、 / var / jenkins_home Dockerコンテナ内のディレクトリは、jenkins_home。としてホスト上のボリュームとしてマウントされます。

docker run --name my-jenkins-2 -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

上記のコマンドを実行した後、新しいDockerコンテナーを作成し、実行状態に入る必要があります。 dockerpsコマンドを使用してコンテナが実行されていることを確認できます。

実行中のすべてのコンテナの一覧表示

DockerホストでのJenkinsデータの検索

では、Jenkinsデータフォルダは今どこにありますか? my-jenkins-2コンテナの作成に使用したコマンドに基づいて、マウントされたボリュームは jenkins_home 。ファイルシステムのどこにjenkins_homeがあるかを知る 場所を見つけることができます。docker volumeを使用してください コマンド。

以下のコマンドは、 jenkins_homeの詳細を表示します。 Dockerホスト上のボリューム。

docker volume inspect jenkins_home

以下のスクリーンショットは、 jenkins_homeに関する情報を示しています。 上記のコマンドを実行した結果のボリューム。

Jenkinsデータの場所がわかったので、マウントポイントの場所を調べて確認できます。この例では、 jenkins_home ボリュームマウントポイントは/var / lib / docker / bytes / jenkins_home / _dataにあります 。

Jenkinsデータがコンテナの外部に保持されるようになったので、保管のためにディレクトリをバックアップできます。また、Jenkinsコンテナが削除されても、データはDockerホストに残ります。

DockerComposeとボリュームを使用したJenkinsの実行

Jenkinsを実行する別の方法は、docker-composeを使用することです。 指図。 Docker Compose 、必要に応じて、Jenkinsの1つ以上のインスタンスをデプロイできます。ただし、その前に、DockerComposeファイルを作成する必要があります。 インスタンスごとに。

Docker作成ファイルの作成

デフォルトでは、docker-compose コマンドは、 docker-compose.ymlという名前のファイルを読み取ります またはdocker-compose.yaml コマンドを発行したのと同じ作業ディレクトリにあります。

選択したテキストエディタを使用して、新しい空白のファイルを開きます。次に、以下のYAMLコードをコピーしてエディターに貼り付け、 docker-compose.ymlを保存します。 ファイル。

# docker-compose.yml
version: '3.7'
services:
  jenkins:
    image: jenkins/jenkins:lts
    privileged: true
    user: root
    ports:
      - 8083:8080
      - 50003:50000
    container_name: my-jenkins-3
    volumes:
      - ~/jenkins_data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

この記事では、DockerComposeファイルの構造については説明していません。公式の作成ファイルリファレンスドキュメントを参照できます。 作成ファイルの各設定の意味をさらに理解するため。

ただし、この例では、以下に示すように、両方のDockerComposeファイルの最も重要な設定を分類できます。

  • 画像 :これは、Dockerコンテナインスタンスの作成に使用するベースイメージです。
  • ポート :ここで、Dockerホストとコンテナ間のポートマッピングを定義します。
  • ボリューム :これらは、Dockerホストとコンテナーの間にマップされたボリュームです。
  • container_name :これは、作成するコンテナに割り当てる名前です。この例では、コンテナ名は my-jenkins-3です。 。

DockerComposeを使用したJenkinsコンテナの起動

2つのDockerComposeファイルを保存したので、それらを使用して2つのJenkinsDockerコンテナインスタンスを起動できます。

my-jenkins-3を開始するには コンテナの場合は、以下のコマンドを使用してください。以下のコマンドは、 docker-compose.ymlを想定していることに注意してください。 ファイルは、コマンドを実行したのと同じディレクトリにあります。

# Start the my-jenkins-3 container
docker-compose up -d

# Get the initial admin password
docker exec my-jenkins-3 cat /var/jenkins_home/secrets/initialAdminPassword

# Confirm the my-jenkins-3 container is running
docker ps

my-jenkins-3 次に、以下に示すように、コンテナが起動して実行状態になります。

ブラウザを使用してURLhttp:// localhost:8083に移動し、Jenkinsにアクセスして、初期設定を完了します。

my-jenkins-3のJenkinsの初期設定が完了したら コンテナの場合、〜/jenkins_dataフォルダにJenkinsデータファイルが入力されていることを確認できます。

JenkinsデータファイルはDockerホストに保持されるため、 my-jenkins-3 Dockerコンテナが削除されても、構成は存続します。 Jenkins構成の永続性をさらにテストするには、 my-jenkins-3を停止します。 以下のコマンドを使用してコンテナを作成します。

docker-compose down

downer-compose downを使用することに注意してください コマンドはコンテナ自体を自動的に削除します。

次に、 my-jenkins-3を開始します 以下のコマンドを使用して再度起動します。

docker-compose up -d

また、Jenkins Webインターフェイスにアクセスすると、最初に表示されるページは、初期設定ページではなくログインページです。ログイン資格情報を含め、同じJenkins構成が保持されていることがわかります。

概要

この記事では、Dockerをさまざまな方法で使用してJenkinsを実行する方法を学びました。ボリュームがマウントされている場合とされていない場合のDockerでJenkinsを実行する方法を学習しました。また、Jenkinsデータをコンテナ内からホストにバックアップする方法を学びました。

また、DockerホストにマップされたボリュームでDockerComposeを使用してJenkinsインスタンスを実行する方法も学習しました。その後、JenkinsデータファイルがDockerホストに保存され、Dockerコンテナが削除された場合でもJenkins設定が永続的かつ一貫性のあるものになります。

DockerとDockerComposeをボリュームで使用すると、Jenkinsのデータをバックアップして最終的に再利用する柔軟性が得られます。 DockerでJenkinsを実行する方法として、もっと使用すると思いますか?

さらに読む
  • DockerforWindowsを使用した最初のコンテナのデプロイ
  • WindowsでDockerボリュームを作成(および管理)する方法
  • Ubuntu20.04のインストール方法[ステップバイステップ]

Docker
  1. Dockerを使用してJenkinsをインストールする方法

  2. DockerComposeの使用方法

  3. DockerコンテナでMySQLを実行する方法

  1. DockerComposeシークレットを使用して機密データを保護する方法

  2. DockerComposeを使用するためのクイックガイド

  3. CentOSにDockerをインストールする方法

  1. DockerRunを使用してエントリポイントをオーバーライドする方法

  2. 例を使用してDockerRunコマンドを使用する方法

  3. Dockerを使用してJenkinsコンテナをSystemdサービスとして実行する方法