28
28

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 5 years have passed since last update.

Docker で Jenkins 2.0 を動かすときのディスク権限、バックアップ/リストアに関するTips

Posted at

Jenkins 2.0を動かすときのボリューム周りのTips を自分用のメモとして書いておきます。

13148437_1166694753370341_915271346_o.jpg

課題

JenkinsのDockerイメージ、もしくはそれを継承したイメージを作成した場合、課題になるのが、ディスクの実行権限です。このイメージは、Dockerイメージの中で定義された、Jenkinsユーザ(uid 1000) で実行されるようになっています。

 Dockerコンテナは、通常だとコンテナの内部にボリュームを持っていて、コンテナを削除すると、ボリュームは消えてしまいます。設定内容を保存したいケースでは、-vオプションを使って、保存したいディスク領域を、ホストOSのディスク領域にマウントする必要があります。

ただ、その場合、マウントした、ホストOS側のディスク領域が、Docker内のJenkinsユーザからアクセスできる必要があります。

参考Jenkins 2.0 container

方式1. ホストOSに、Jenkinsユーザを作成する

単純な解決策としては、uid 1000を持ったJenkinsユーザをホストOS側に作ってしまえばOK
です。重要なのはuidなので、ホストOS側のユーザ名は違っていても問題ありません。
しかし、それだと、既にuid 1000が使われていたりする場合もありますし、ホストOS側をコンテナの中身に合わせるのは、ホストOSがコンテナに依存することになり気持ち悪いです。

$ docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins

方式2. docker volume を使う

私は上記の理由で、docker 1.9から導入された、docker volumeを使うことにしました。これは、docker が使えるvolumeで、docker runを実行するときに通常の-vオプションで、マウント可能になります。

Volumeの作成は次の通り。デフォルトだと、localドライバが採用されます。もっと複雑なドライバを使いたい場合は、-dオプションがあります。詳しくはこちらまで。
[Mount a shared-storage volume as a data volume]
(https://docs.docker.com/engine/userguide/containers/dockervolumes/)

$ docker volume create --name jenkins-volume
$ docker volume ls  

volumeを作成したら、次のコマンドでJenkins 2.0 のボリュームをマウントしながら実行します。

$ docker run -p 8080:8080 -p 50000:50000 -v jenkins-volume:/var/jenkins_home jenkins

バックアップ

バックアップは--volumes-from オプションを使って、実行中のコンテナから次のようの実施することができました。

参考: Backup, restore, or migrate data volumes

$ docker run --rm --volumes-from <Container Name> -v $(pwd):/backup ubuntu tar cvf /backup/jenkins_home.tar /var/jenkins_home

リストア

リストアは試していませんが、次のようなコマンドでできると思います。

$ docker run -v jenkins-volue:/var/jenkins_home --name jenkins-restore ubuntu /bin/bash
$ docker run --rm --volumes from jenkins-restore -v $(pwd):/backup ubuntu bash -c "cd /var/jenkins_home && tar xvf /backup/jenkins_home.tar --strip 1"

では、よい Jenkins 2.0 ライフを。

28
28
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
28
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?