CentOS7 の docker で n 個の Jenkins 環境を用意した話

概要

CentOS7 の docker で Jenkins 環境を用意した話
コンテナ内の Jenkins にアクセスするにはポートフォワーディングをする必要がある.

また,Jenkins をインストールしたコンテナイメージをコミットしておくことで,n 個の Jenkins 環境を用意に作成できる.
(プログラムごとに Jenkins を用意する手間がへる?)

Jenkins を入れたコンテナイメージを作成する

// コンテナを動かす (今回は CentOS6 のコンテナないに Jenkins を構築する)
# docker run -it --name jenkins01 centos:centos6 /bin/bash
bash-4.1#


// Jenkins をインストールするために必要なものを入れる
bash-4.1# yum -y install wget
bash-4.1# yum -y install java-1.7.0-openjdk.x86_64


// Jenkins をインストールする
bash-4.1# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
bash-4.1# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
bash-4.1# yum -y install jenkins

// OS 起動時にサービスが起動するようにする
bash-4.1# chkconfig jenkins on

// コンテナを一旦終了する
bash-4.1# exit
exit

コンテナをコミットしておく

// コンテナをコミット
# docker commit jenkins01 kawa0810/jenkins:ver1.0

// イメージ作成につかったコンテナは削除する
# docker rm jenkins01

Jenkins にアクセスできるようにコンテナを起動する

// コンテナないの Jenkins にアクセスさせるためにポートフォワーディングする
// ポートフォワーディングは -p <ホストで割り当てるポート>:<コンテナのポート> で指定する
# docker run -it -p 8000:8080 --name jenkins01 kawa0810/jenkins:ver1.0 /bin/bash
bash-4.1#

// Jenkins を起動する
bash-4.1# service jenkins restart
<Jenkins サービスの起動に時間がかかる>

// Jenkins へアクセスするにはブラウザで以下にアクセス
// http://<ホストの IP アドレス>:8000

n 人の Jenkins を用意する

// 「ポートフォワーディングでホストで割り当てるポート」を調整すれば 
// n 個の Jenkins コンテナを用意できる

// 1個目
# docker run -it -p 8000:8080 --name jenkins01 kawa0810/jenkins:ver1.0 /bin/bash
bash-4.1#

// 2個目 (ホストのポートとコンテナ名を変える)
# docker run -it -p 8001:8080 --name jenkins02 kawa0810/jenkins:ver1.0 /bin/bash
bash-4.1#

// 3個目 (ホストのポートとコンテナ名を変える)
# docker run -it -p 8002:8080 --name jenkins03 kawa0810/jenkins:ver1.0 /bin/bash
bash-4.1#

...

[補足] コンテナ内の Jenkins が使うポートを変更する場合

// CentOS では以下のファイルを変更する模様
bash-4.1# emacs /etc/sysconfig/jenkins -nw

// ファイルを変更後に Jenkins を再起動する
bash-4.1# service jenkins restart