ubuntu 14.04でdockerでjenkinsで遊んでみる

Docker触ってみて三日目のみゅみゅです。
習うより慣れよ！　ということでよくわからないけどどんどん触っていきたいと思います。
（説明書とか読むのは嫌いなタイプです）

今日はdockerでjenkinsを動かして、今あるjenkinsのクローンが作れるかどうか試してみます。

### Jenkinsのリポジトリ－を持ってくる

https://registry.hub.docker.com/_/jenkins/
とりあえずここを見ながらやってみます。

```shell-session
root@raidtest:~# docker run -p 8080:8080 jenkins
（ずらずらずら～と）

INFO: Finished Download metadata. 9,651 ms
--> setting agent port for jnlp

```
最後こんなメッセージが出たのでWebブラウザーで8080ポートを叩くと。。。
Jenkins先生のなんか微妙にイラってくる顔が出た！

・・・えーと、おしまい？
Ctrl+C　で落ちちゃうので再度

```shell-session
※イメージの確認
root@raidtest:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
jenkins             latest              4704aa632ce7        2 weeks ago         887.1 MB

※稼働中のコンテンツの確認（なし）
root@raidtest:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

※コンテンツ全部の確認（さっきのジェンキンス君）
root@raidtest:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                        PORTS               NAMES
3c8b37867b1e        jenkins             "/usr/local/bin/jenk   6 minutes ago       Exited (130) 16 seconds ago                       stupefied_lovelace

※Ctrl+c で止めたコンテンツの起動
コンテンツ/イメージで start/run で理解でいいのかなぁ？
root@raidtest:~# docker start 3c8b37867b1e

※コンテンツが稼働なのを確認
root@raidtest:~# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                               NAMES
3c8b37867b1e        jenkins             "/usr/local/bin/jenk   9 minutes ago       Up About a minute   0.0.0.0:8080->8080/tcp, 50000/tcp   stupefied_lovelace

```

これで8080ポートにアクセスするとジェンキンス君が動いてるのを確認

## 既存のJenkins君のバックアップ

やり方は色々あると思うのですが、そんな大したジョブはないので

```shell-session
# tar zcvfp /tmp/jenkins-backup_20150701.tar.gz ./*.xml ./plugins/*.jpi ./jobs/
```
こんな感じでログも含めて全部固めました

## Dockerで動かしたJenkins君にバックアップを持っていく

まず、動いているコンテナにログインして中身がどんな感じか確認

```shell-session

※稼働中のコンテナの確認
root@raidtest:~# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                               NAMES
3c8b37867b1e        jenkins             "/usr/local/bin/jenk   37 minutes ago      Up 6 minutes        0.0.0.0:8080->8080/tcp, 50000/tcp   stupefied_lovelace

※コンテナに入ってみる
root@raidtest:~# docker exec -it 3c8b37867b1e bash
root@3c8b37867b1e:/#
root@3c8b37867b1e:/#
root@3c8b37867b1e:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@3c8b37867b1e:/# cd /home
root@3c8b37867b1e:/home# ls
root@3c8b37867b1e:/home# ls -al
total 8
drwxr-xr-x  2 root root 4096 May  4 13:20 .
drwxr-xr-x 65 root root 4096 Jul  2 07:58 ..
root@3c8b37867b1e:/home#

※うん、/homeあたりにバックアップデータ置けばいいかなぁ

```
バックアップデータを /homeにおいてみる

```shell-session

※ホストから標準入出力経由でファイルのコピー
root@raidtest:~# docker exec -i 3c8b37867b1e /bin/bash -c 'cat > /home/jenkins-backup_20150701.tar.gz' <  jenkins-backup_20150701.tar.gz
root@raidtest:~#

※コンテナにログイン
root@raidtest:~# docker exec -it 3c8b37867b1e bash

※確認すると /homeに先ほどのファイルが
root@3c8b37867b1e:/# cd /home
root@3c8b37867b1e:/home# ls
jenkins-backup_20150701.tar.gz
```

## バックアップの展開

https://registry.hub.docker.com/_/jenkins/
ここに、jenkins_homeは【/var/jenkins_home】みたいなことが書いてありますので、とりあえず先ほどのバックアップを展開してみます

```shell-session
root@3c8b37867b1e:~# cd /var/jenkins_home/
root@3c8b37867b1e:/var/jenkins_home#
root@3c8b37867b1e:/var/jenkins_home# tar zxvfp /home/jenkins-backup_20150701.tar.gz

ずららぁ～　と
```

### jenkinsの設定の再読み込み

jenkinsの【Jenkinsの管理】の中で【設定の再読み込み】ってリンクがあるのでそこをポチッとすると、設定が全部よまれたー！
※バージョン違いとか色々問題はあるかもしれませんが、なんとなくcloneが出来たかなぁ～　と