Jenkins の永続的な運用環境を Docker でつくってみるメモ。CoreOS 使っています。
イメージ取得
Jenkins は公式イメージが提供されているので、こちらを使用します:
core@coreos ~ $ docker search jenkins
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
jenkins Official Jenkins Docker image 248 [OK]
タグは latest
より weekly
のが新しい:
docker pull jenkins:weekly
コンテナ実行
Jenkins サーバーをバックグラウンドコンテナとして起動します:
docker run -d -P -v /media/volume/jenkins_home:/var/jenkins_home jenkins:weekly
-
-v
でデータボリューム/var/jenkins_home
をホストの/media/volume/jenkins_home
に割り当てている。 - CoreOS 側で
/media/volume
に NFS で NAS をマウントしてデータの永続化を行なうようにしている。
ホストに割り当てられたポート番号をプロセス一覧から確認します:
core@coreos ~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28435e837a3a jenkins:1.596 "/usr/local/bin/jenk 21 seconds ago Up 20 seconds 0.0.0.0:49182->8080/tcp, 0.0.0.0:49183->50000/tcp furious_bartik
これだと 49182
が HTTP 公開ポート、 49183
がスレーブサーバーとのコミュニケーション公開ポートとして割り当てらています。
あとは web ブラウザから Jenkins にアクセスします。アドレスは上記ポート番号を指定して下記のような感じです:
http://192.168.0.98:49182/
Jenkins は標準で /var/jenkins_home
以下に全てのデータが格納されるので、このパスをデータボリュームにして分離してやれば、データの永続化とコンテナのポータビリティが簡単に担保できます。