0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CI/CDをkatacodaで体験(初心者向け) - Part10(Building Docker Images using Jenkins)

Posted at

CI/CD入門

このぺーじでは、katacodaと呼ばれる「ブラウザから無料で勉強用のインスタンスを起動できるWebサービス」を利用してCI/CDを実践します
内容は上記リンクに沿うので、不明点があればそちらへどうぞ

jenkinsによるdockerコンテナのbuild - Building Docker Images using Jenkins

ここでは、CI/CDの中心となるjenkinsの利用例を紹介
このシナリオで学習することをさっと確認する場合は概要を確認
理解に間違い等がございましたら、ぜひご指摘ください

概要

  • jenkinsによるコンテナbuildには下記の手順を踏む
    1. 特定のpluginをインストール
    2. pluginの設定
    3. jenkins agentの設定
    4. jenkins agentに実行させるprojectの作成
    5. project実行

Launch Jenkins

まず下記コマンドを実行しjenkinsをdockerコンテナとして実行

docker run -d -u root --name jenkins \   //バックグラウンド実行、rootユーザ、コンテナ名"jenkins"
    -p 8080:8080 -p 50000:50000 \   //8080番ポートはweb dashboard、50000番はjenkins agentとの疎通用
    -v /root/jenkins_2112:/var/jenkins_home \   //ホスト側のマウントpath及びコンテナ側のpath
    jenkins/jenkins:2.112-alpine   

今回はホスト端末が別に存在している
アクセスする場合は、ssh接続

$ docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                              NAMES
6048602eb5b9        jenkins/jenkins:2.112-alpine   "/sbin/tini -- /usr/…"   2 minutes ago       Up2 minutes        0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   jenkins

コンテナが正常に既往していることを確認後、こちらのリンクから移動(デフォルト)
ログインには、admin344827fbdbfb40d5aac067c7a07b9230
環境はこのようになっている

図1.png

Configure Docker Plugin

ここでは、Docker pluginを設定する
Docker pluginを設定することで、jenkinsがdockerデーモンとの通信をagentを介して実現(以下の概略図参照)

図4.png

dashboard上で以下の通りクリックしていく
Manage Jenkins > Manage Plugins > availableタブのDocker > Install without Restart

このpluginはクラウドプロバイダーとして扱われる
dockerホストと通信するときのみコンテナ(jenkins agent)は起動する

Add Docker Agent

ここでは、先ほど用意したagentに「コンテナを起動させる」構成を設定

dashboard上で以下の通りクリックしていく
Manage Jenkins > Configure System > Add a new cloudから"Docker" > Docker Host URIにtcp://172.17.0.67:2345(docker server)を入力
この手順でDocker daemonとの疎通が成功
確認する場合は、Docker Host URIのTest Connectionの結果とコンソール上でdocker versionと打ち込んだ際の結果を比較

図3.png

$ docker version
Client:
 Version:      18.05.0-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   f150324
 Built:        Wed May  9 22:16:25 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.10
  Git commit:   0520e24302
  Built:        Fri Mar 23 01:48:12 2018
  OS/Arch:      linux/amd64
  Experimental: false

続いて、agentコンテナを設定

  1. Docker Agent templates
  2. Add Docker Template
  3. agentのlabel記入docker-agent
  4. コンテナイメージ記入benhall/dind-jenkins-agent:v2
  5. volumeのマウント設定/var/run/docker.sock:/var/run/docker.sock
  6. agentコンテナとの接続方法指定Connect with SSH
  7. save

図2.png

Create Build Project

ここでは、先ほどの"jenkins-agent"を用いて実行するコンテナの設定を行う
手順は以下の通り

  1. Create new jobsでジョブの作成
  2. Freestyle projectを選択し、プロジェクト名として"Katacoda Jenkins Demo"
  3. コンテナ作成に当たって、Docker daemonに要求を出せる"dokcer-agent"(先の手順で作成)を選択
  4. 実行するコンテナイメージとしてGitレポジトリを指定
  5. Add Build StepからExecute Shellを選択し、buildの詳細を以下のように記述し、Save
ls
docker info
docker build -t katacoda/jenkins-demo:${BUILD_NUMBER} .
docker tag katacoda/jenkins-demo:${BUILD_NUMBER} katacoda/jenkins-demo:latest
docker images

図1.png

Build Project

ここでは、dashboardから実際にjenkinsによるコンテナbuildを実行
Build Nowをクリック

jenkinsコンテナからjenkins-agentコンテナが起動され、そこからGitのdockerfileをもとにコンテナを起動するので多少時間がかかる
時折、pending—Jenkins doesn’t have label docker-agentというエラーがdashboardに表示されることもある

View Console Output

コンテナの起動がjenkinsから確認出来たら、コンソールでコンテナをrunする

$ docker run -d -p 80:80 katacoda/jenkins-demo:latest

~~~

$ curl host01
<h1>This request was processed by host: </h1> 

図3.png

docke imageでコンテナイメージを確認

図2.png

  
benhall/dind-jenkins-agentはdocker-agentイメージのこと

katacoda/jenkins-demoはjenkinsによるコンテナの作成をしめしている
また、TAGの部分に着目すると、1,2,latestの三つが用意されている
これは、"Create Build Project"の手順5にて、${BUILD_NUMBER}をタグとして管理し、jenkinsによるコンテナbuildの処理が二回行われたことを意味する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?