dockerを使用してJenkinsをダウンロードして構成する場合は、手動コマンドを使用してプロセスを管理する必要があります。それは非常に危険で複雑になります。そこで、systemdを使用して管理します。実際には、Linuxオペレーティングシステムのシステムおよびサービスマネージャーです。デーモン、ロギングなどのオンデマンドの開始、有効化、再起動、停止を特徴としています。
この記事では、Docker HubリポジトリからJenkinsパッケージをダウンロードし、systemdmanagerを使用して管理します。私はUbuntuLinuxを使用しましたが、systemdをサポートするcentos、Debian、Redhatなどで使用できます。
前提条件
- インストールされているDockerの最新バージョン
- Jenkinsイメージをダウンロードするためのインターネット接続
構成
プロセスを実行するには、ユーザーが必要です。そこで、システムグループを作成し、システムユーザーをグループに追加します。ログインする必要がないため、ログインシェルは提供していません。ここでは「devops」という名前を付けました。お好きな名前を付けることができます。
$ sudo groupadd --system devops
$ sudo useradd -s /sbin/nologin --system -g devops devops
Dockerのインストール中に、ユーザーdockerがデフォルトで追加されました。したがって、Docker内でプロセスを実行するには、「devops」ユーザーと現在のログインユーザーをDockerグループに追加しましょう。
$ sudo usermod -aG docker devops
$ sudo usermod -aG docker $USER
コンテナボリュームをホストにマップするためのディレクトリが必要です。それでは、ディレクトリを作成して、そのディレクトリの現在のユーザー所有権を与えましょう。
$ sudo mkdir -p /data/jenkins
$ chown -R $USER:$USER /data/jenkins
次のコマンドを使用して、ユーザー「devops」を確認できるようになりました。出力は次のようになっている必要があります。
$ id devops
次に、サービスを作成します。サービスファイルは/etc/ systemd / system /内に保存されるため、以下に示すように.serviceで終わるファイルを作成します。
$ vim /etc/systemd/system/docker-jenkins.service
ファイルに次のコンテンツを追加します。次の構成では、サービス名docker-jenkinsが作成されます。 Docker Hubから最新バージョンのjenkinsイメージをプルし、コンテナーを実行するだけです。また、jenkinsサービスにアクセスするために必要なホストサーバーのポート8080と50000をマップします。以下の「ユニット」セクションで定義されているように、docker.serviceを正常に実行する必要があります。ユーザーが異なる場合は、それに応じてマウントポイントが変更されます。
[Unit] Description=My Jenkins Server Documentation=https://jenkins.io/doc/ After=docker.service Requires=docker.service [Service] Type=simple User=devops Group=devops TimeoutStartSec=0 Restart=on-failure RestartSec=30s ExecStartPre=-/usr/bin/docker kill jenkins-server ExecStartPre=-/usr/bin/docker rm jenkins-server ExecStartPre=/usr/bin/docker pull jenkins/jenkins ExecStart=/usr/bin/docker run \ --name jenkins-server \ --publish 8080:8080 \ --publish 50000:50000 \ --volume /data/jenkins:/var/jenkins_home \ jenkins/jenkins SyslogIdentifier=jenkin ExecStop=/usr/bin/docker stop jenkins-server [Install] WantedBy=multi-user.target
次のコマンドを使用して、systemdデーモンにサービスファイルをリロードします。
$ sudo systemctl daemon-reload
以下のコマンドを使用してDockerサービスを開始します。
$ sudo systemctl start docker-jenkins
Systemdは、syslogでデフォルトのロギングサービスも提供します。次の場所でログを確認できます。
$ sudo tail -f /var/log/syslog
これで、systemd managerの「有効化」機能を使用して、サーバーの再起動後にサービスを開始できます。
$ sudo systemctl enable docker-jenkins
また、サービスを再起動して確認してください。
$ sudo systemctl restart docker-jenkins
Jenkinsのセットアップ
jenkinsを設定するには、最初にhttp:// yourserverip:8080にアクセスします。次に、次のパスで設定されている初期管理者パスワードを入力する必要があります。出力をコピーして、「管理者パスワード」に貼り付けます。次に、[続行]をクリックします。
$ cat /data/jenkins/secrets/initialAdminPassword
必要なプラグインをインストールして続行できます。
結論
この記事では、Dockerを使用して最新バージョンのJenkinsをインストールし、それを使用するようにサービスを構成する方法を学習しました。 systemdでJenkinsを管理すると、作業が簡単になります。読んでいただきありがとうございます。