Dockerのジェンキンズ:Jenkinsコンテナの中でDockerを走らせること
10204 ワード
この記事はもともと投稿されたHackmamba
ジェンキンズは、人気の連続統合と配信(CI/CD)ツールです.ジェンキンズはオープンソースで、その既存のソフトウェアを維持して、その機能性を増やすためにプラグインを構築する大きな開発者コミュニティを持ちます.
ジェンキンズを使用している間、優れたコミュニティサポートで、あなたはDockerのようなコンテナ技術でJenkinsを走らせることによって解決することができる構成ファイル衝突のような問題に苦しむかもしれません.しかし、あなたがJenkinsでアプリケーションをDockerizeする計画をするならば、DockerでJenkinsを走らせることは新しい挑戦をもたらします.
この記事ではDockerでJenkinsを設定し、Dockerコンテナの実行を可能にします.最後に、ビルドを自動化し、Dockerイメージを押すことによってセットアップをテストします.
ソースコードと
この記事に従ってください. Dockerと端末に関する知識 ドッカーハブアカウント-無料作成here . ジェンキンズを知ることは厳しい要求ではありませんが、それは良いことでしょう.
DockerでJenkinsを設定してDockerを実行できるようにするには、少なくとも2つのオプションがあります. DockerのDockerと カスタムJenkins Dockerイメージを作成し、コンテナをホストシステムデーモンにマウントする この記事では後者のオプションを使用しますが、まずDockerでDockerについて学びます.
DockerのDocker
DockerのDockerの主な目的はDockerコアチームがDocker開発でより速く働くのを助けることです.そして、当時(2013年から2015年)、DockerでDockerを動かす唯一の方法は
それは動作しますが
今日、物事は非常に異なっている.DockerのDockerは、より安全で安全なアプローチを持っていますrootless containers フリーウェアツールsysbox . sysboxのようなツールでは、-特権フラグのないDockerでDockerを実行し、通常のコンテナとしてKubernetesクラスタの複数ノードを実行するような特定のシナリオを最適化できます.
起動するには
The 第一 下記 最後の カスタムJenkinsイメージを構築するには、次の手順に従います.
コンテナーが停止し、再起動または削除されたときに、Jenkinsの構成とデータを格納します. Dockerizeアプリケーション(ゴールの目標)Dockerデーモンの欠如のために(カスタムビルドして画像をプッシュする必要があります)カスタムジェンキンズイメージを使用する. ストアジェンキンズデータ
Jenkinsを保存するには、あなたのホストマシンにJenkinsの明示的なボリュームを作成する必要があります.これを行うには、この引数を追加します
JenkinsコンテナにおけるDockerデーモンの使用の有効化
これを行うには、JenkinsコンテナのDocker CLIをホストマシン上のDockerデーモンに接続します.
さて、すべての引数をまとめると、次のコマンドでカスタムJenkinsイメージを実行できます.
あなたが行くとき
あなたはすぐに得ることができます
以下のようになります.
次のプロンプトで、プラグインのインストールを選択します.Jenkinsは自動的にすべてのプラグインをインストールします.
インストール後、最初の管理者ユーザーを作成し、設定を終了します.
これまで、カスタムジェンキンズイメージを作成し、Dockerを実行できるように設定します.次に、JenkinsをGithub Repoのビルド(Docker Image)に自動化し、Docker Hubに公開することで、セットアップ全体をテストします.
Jenkins環境でnodejsアプリケーションをdockizeする前に、次のプラグインをインストールする必要があります.
nodejsプラグイン:ビルドステップとしてnodejsスクリプトを実行するには
Cloudbees Dockerのビルドと発行プラグイン 上記のプラグインをインストールするには、Jenkinsダッシュボード上で、システム構成の下でJenkinsを管理するために、プラグインの管理を選択します.その後、プラグインマネージャーで使用可能なタブをクリックし、それぞれのプラグインを検索してインストールします.
NodeJSプラグイン
管理Jenkinsでは、まだシステム構成の下で、グローバルツール構成を選択し、次のイメージに類似したNodeJSインストールを追加します.
アプリケーションをdockerizeするビルドジョブを作成する
Jenkinsダッシュボードで起動するには、新しい項目をクリックし、フリースタイルプロジェクトを選択して名前を付けます.次に、「了解」をクリックします.
次のWebページで、ソースコード管理タブをクリックし、gitを選択し、GithubリポジトリのURLを追加します.https://github.com/Kikiodazie/Backend-RESTful-API.git .
リポジトリがパブリックであるとき、資格情報フィールドを空白にしておきます.
次に、ビルドタブをクリックして構築し、NodjsアプリケーションイメージをCloudBees Dockerビルドを使用して発行し、プラグインを発行するためのビルドステップを追加します.
Dockerビルドを選択してビルドステップを選択した後、
Docker Hubのレジストリ資格を追加した場合でも、DockerでJenkinsを有効にしないため、残りのフィールドを空白にします.
空のレジストリ資格情報を解決するには、コマンドラインを介してJenkinsコンテナ内のDockerハブアカウントにログインしてジェンキンズのアクセスを与える必要があります.
得る
Jenkinsに戻る、今すぐビルドをクリックし、NODEJSアプリケーションイメージが構築され、あなたのDockerハブのアカウントに公開されます.
ビルド履歴でコンソール出力を表示できます.
出力は以下のようになります.
上記のイメージは、DockerのJenkinsがイメージを構築し、Docker Hubに公開することを示しています.
この記事はDockerでJenkinsを設定してDockerを実行し、Docker HubにリモートGithubリポジトリのDockerイメージを構築して発行することによってテストします.
DockerでJenkinsを学ぶには、次のリソースをチェックします.
Installing Jenkins in Docker - ジェンキンズ文書について Using Docker-in-Docker for your CI or testing environment? Think twice Easy Jenkins with a System Container
ジェンキンズは、人気の連続統合と配信(CI/CD)ツールです.ジェンキンズはオープンソースで、その既存のソフトウェアを維持して、その機能性を増やすためにプラグインを構築する大きな開発者コミュニティを持ちます.
ジェンキンズを使用している間、優れたコミュニティサポートで、あなたはDockerのようなコンテナ技術でJenkinsを走らせることによって解決することができる構成ファイル衝突のような問題に苦しむかもしれません.しかし、あなたがJenkinsでアプリケーションをDockerizeする計画をするならば、DockerでJenkinsを走らせることは新しい挑戦をもたらします.
この記事ではDockerでJenkinsを設定し、Dockerコンテナの実行を可能にします.最後に、ビルドを自動化し、Dockerイメージを押すことによってセットアップをテストします.
githubリポジトリ
ソースコードと
Dockerfile
Githubの上のnodejsアプリケーションのhere .必要条件
この記事に従ってください.
DockerでJenkinsを設定する
DockerでJenkinsを設定してDockerを実行できるようにするには、少なくとも2つのオプションがあります.
DockerのDocker
DockerのDockerの主な目的はDockerコアチームがDocker開発でより速く働くのを助けることです.そして、当時(2013年から2015年)、DockerでDockerを動かす唯一の方法は
*-privileged*
**を実行します.それは動作しますが
-privileged
複数のコンテナが共有するときにデータの破損などの他の問題を紹介します/var/lib/docker
. Dockerデーモンだけが/var/lib/docker
設計によって.今日、物事は非常に異なっている.DockerのDockerは、より安全で安全なアプローチを持っていますrootless containers フリーウェアツールsysbox . sysboxのようなツールでは、-特権フラグのないDockerでDockerを実行し、通常のコンテナとしてKubernetesクラスタの複数ノードを実行するような特定のシナリオを最適化できます.
カスタムジェンキンズイメージの作成
起動するには
Dockerfile
を追加します.FROM jenkins/jenkins:lts
USER root
RUN apt-get update -qq \
&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
RUN apt-get update -qq \
&& apt-get install docker-ce=17.12.1~ce-0~debian -y
RUN usermod -aG docker jenkins
The Dockerfile
カスタムジェンキンズイメージを作成するすべてのコマンドが含まれます.FROM
コマンドは、dockerに基本イメージを伝えますjenkins/jenkins:lts
) カスタムイメージを構築するために.RUN
コマンドはすべての必須パッケージをapt-get update
. 次に、使用してカスタムジェンキンズイメージに必要な新しいものをインストールしますapt-get install
. RUN
コマンドはDocker Linux Debian配布CLIをダウンロードします.次に、次の1つのリポジトリに追加されます.RUN
コマンドはJenkinsユーザをDockerグループに追加します.$ docker image build -t custom-jenkins-docker .
Jenkinsを設定するにはイメージを実行できますが、そうすることができません.Jenkinsを保存するには、あなたのホストマシンにJenkinsの明示的なボリュームを作成する必要があります.これを行うには、この引数を追加します
-v jenkins_home:/var/jenkins_home
カスタムJenkinsイメージを実行するとき.JenkinsコンテナにおけるDockerデーモンの使用の有効化
これを行うには、JenkinsコンテナのDocker CLIをホストマシン上のDockerデーモンに接続します.
-v
フラグ.イメージを実行するとき、この引数を追加します./var/run/docker.sock:/var/run/docker.sock
. さて、すべての引数をまとめると、次のコマンドでカスタムJenkinsイメージを実行できます.
$ docker run -it -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v jenkins_home:/var/jenkins_home custom-jenkins-docker
上記のコマンドを実行したら、localhostを訪れてくださいlocalhost:8080
Jenkins環境を設定するにはJenkins環境の設定
あなたが行くとき
localhost:8080
, 次のようなWebページが表示されます.あなたはすぐに得ることができます
admin
返されるログからのパスワード.以下のようになります.
次のプロンプトで、プラグインのインストールを選択します.Jenkinsは自動的にすべてのプラグインをインストールします.
インストール後、最初の管理者ユーザーを作成し、設定を終了します.
これまで、カスタムジェンキンズイメージを作成し、Dockerを実行できるように設定します.次に、JenkinsをGithub Repoのビルド(Docker Image)に自動化し、Docker Hubに公開することで、セットアップ全体をテストします.
Dockerは、DockerでJenkinsとNODEJSアプリケーション
Jenkins環境でnodejsアプリケーションをdockizeする前に、次のプラグインをインストールする必要があります.
nodejsプラグイン:ビルドステップとしてnodejsスクリプトを実行するには
Cloudbees Dockerのビルドと発行プラグイン
Dockerfile
ベースのプロジェクトとDockerハブに構築された画像を公開します.NodeJSプラグイン
管理Jenkinsでは、まだシステム構成の下で、グローバルツール構成を選択し、次のイメージに類似したNodeJSインストールを追加します.
アプリケーションをdockerizeするビルドジョブを作成する
Jenkinsダッシュボードで起動するには、新しい項目をクリックし、フリースタイルプロジェクトを選択して名前を付けます.次に、「了解」をクリックします.
次のWebページで、ソースコード管理タブをクリックし、gitを選択し、GithubリポジトリのURLを追加します.https://github.com/Kikiodazie/Backend-RESTful-API.git .
リポジトリがパブリックであるとき、資格情報フィールドを空白にしておきます.
次に、ビルドタブをクリックして構築し、NodjsアプリケーションイメージをCloudBees Dockerビルドを使用して発行し、プラグインを発行するためのビルドステップを追加します.
Dockerビルドを選択してビルドステップを選択した後、
your_Dockerhub_id/desired_name_of_the_repo
例kikiodazie/node-docker
. Docker Hubのレジストリ資格を追加した場合でも、DockerでJenkinsを有効にしないため、残りのフィールドを空白にします.
空のレジストリ資格情報を解決するには、コマンドラインを介してJenkinsコンテナ内のDockerハブアカウントにログインしてジェンキンズのアクセスを与える必要があります.
得る
bash
コンテナの実行:$ docker exec -it <container_name/container_id> /bin/bash
次にコンテナの内部で実行します.$ docker login
このプロセスを完了するには、Docker Hubの資格情報を入力します.Jenkinsに戻る、今すぐビルドをクリックし、NODEJSアプリケーションイメージが構築され、あなたのDockerハブのアカウントに公開されます.
ビルド履歴でコンソール出力を表示できます.
出力は以下のようになります.
上記のイメージは、DockerのJenkinsがイメージを構築し、Docker Hubに公開することを示しています.
結論
この記事はDockerでJenkinsを設定してDockerを実行し、Docker HubにリモートGithubリポジトリのDockerイメージを構築して発行することによってテストします.
資源
DockerでJenkinsを学ぶには、次のリソースをチェックします.
Installing Jenkins in Docker - ジェンキンズ文書について
Reference
この問題について(Dockerのジェンキンズ:Jenkinsコンテナの中でDockerを走らせること), 我々は、より多くの情報をここで見つけました https://dev.to/hackmamba/jenkins-in-docker-running-docker-in-a-jenkins-container-1jeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol