Dockerで立ち上げたJenkinsの設定情報を別コンテナにマウントさせる


こんにちは

今回は、Dockerコンテナで立ち上げたJenkinsの/var/jenkins_home配下のデータを
データボリュームコンテナとして立ち上げた別コンテナにマウントさせる方法をまとめたいと思います。
すごく正攻法では無い気がしますが・・・w

データボリュームコンテナの生成

まず初めに、データボリュームコンテナを生成します。
今回選択したベースイメージはbusyboxです。

dockerfile
# 1.Dockerイメージの取得
FROM busybox

# 2.データの設定
VOLUME /var/jenkins_home

上記のdokcerfileをもとに、データボリュームコンテナ用イメージを生成します。

データボリュームコンテナ用イメージの生成
$ docker build -t jenkinsdata .

正しく生成されたか確認します。

イメージファイル確認
$ docker images jenkinsdata
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkinsdata         latest              f6348620c17f        10 hours ago        1.16MB

確認できたらコンテナを立ち上げます。

コンテナ起動
$ docker run -it --name jenkinsdata jenkinsdata

立ち上がったか確認します。

コンテナ起動確認
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                                              NAMES
f5cc86a2c27e        jenkinsdata         "sh"                     10 hours ago        Exited (0) 12 minutes ago                                                      jenkinsdata

データボリュームコンテナ生成の作業は完了です。

jenkins_homeディレクトリの取得

データボリュームコンテナの/var/jenkins_homeは空の状態であるため、
一度Jenkinsを構築して、Jenkinsコンテナ内の/var/jenkins_homeをコピー、
データボリュームコンテナのそれに配置します。

Jenkinsの起動
$ docker run -p 8080:8080 -p 50000:50000 --name jenkins -d jenkins:latest                          

http://(IPアドレス):8080でJenkinsにつなぎ、
GUIベースで下記画面になるまで、設定作業をします。

作業が完了したら、まずはJenkinsコンテナ内の/var/jenkinsディレクトリをホストにコピーします。

Jenkinsコンテナ⇒ホストにコピー
$ docker cp jenkins:/var/jenkins_home .                         

次はホストからデータボリュームコンテナにコピーします。

ホスト⇒データボリュームコンテナにコピー
$ docker cp /var/jenkins_home jenkinsdata:/var/                         

コピーが完了したら、データボリュームコンテナ内の/var/jenkins_homeの権限を変更します。

権限の変更
$ docker start -ia jenkinsdata 
# chmod 1000:1000 /var/jenkins_home/
# ls -l /var/
drwxr-xr-x   17 1000     1000         4096 Sep  1 16:22 jenkins_home                      

今立ち上げているJenkinsコンテナは用済みなので削除します。

Jenkinsコンテナの停止、削除
$ docker stop jenkins
$ docker rm jenkins               

Jenkinsコンテナの起動

最後に、データボリュームコンテナをマウントさせてJenkinsコンテナを立ち上げます。

Jenkinsコンテナの起動
$ docker run -p 8080:8080 -p 50000:50000 --name jenkins --volumes-from jenkinsdata -d jenkins:latest                

マウントの確認

マウントできているか確認します。試しに、testというジョブを作成します。

データボリュームコンテナにマウントさせているか確認します。

マウントの確認
$ docker start -ia jenkinsdata
# cd /var/jenkins_home/jobs/       
# ls -l
total 4
drwxr-xr-x    3 1000     staff         4096 Sep  1 16:23 test

作業は完了です。