こんにちは
今回は、Dockerコンテナで立ち上げたJenkinsの/var/jenkins_home配下のデータを
データボリュームコンテナとして立ち上げた別コンテナにマウントさせる方法をまとめたいと思います。
すごく正攻法では無い気がしますが・・・w
##データボリュームコンテナの生成
まず初めに、データボリュームコンテナを生成します。
今回選択したベースイメージはbusyboxです。
# 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をコピー、
データボリュームコンテナのそれに配置します。
$ docker run -p 8080:8080 -p 50000:50000 --name jenkins -d jenkins:latest
http://(IPアドレス):8080でJenkinsにつなぎ、
GUIベースで下記画面になるまで、設定作業をします。
作業が完了したら、まずはJenkinsコンテナ内の/var/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コンテナは用済みなので削除します。
$ docker stop jenkins
$ docker rm 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
作業は完了です。