⑦CoreOSでDockerしてみる(PrivateなDockerレポジトリ⇒Jenkinsの場合)
稼働しているJenkinsのDockerコンテナでイメージを作成して、
Docker Registry経由で、他のCoreOSに環境を移してみます。
■起動中のDockerコンテナでDockerイメージを作成
docker stop jenkins docker commit jenkins localhost:5000/jenkins
■マウントとしたホスト側のファイル
docker commitでは、マウントとしたホスト側のファイルは保存されません。
JENKINS_HOMEがホスト側にあるので、ZIPで固めて、他のCoreOSに持っていきます。
cd /home/core zip -r jenkins_home.zip jenkins_home
■Docker Registryに登録
Docker Registryにpushします。
docker push localhost:5000/jenkins
Docker Registryに登録されたイメージ一覧は、WEBブラウザから確認できます。
http://
{"repositories":["jenkins"]}
■クライアントCoreOSの設定変更
他のCoreOSからDockerイメージをpullすると、HTTPS通信が必要なため、エラーになります・・・
SSL証明書を発行するのは面倒なので、insecure-registryオプションをつけてHTTPアクセスに変更します。
CoreOSのインストール時に、cloud-config.ymlに下記を追記しておきます。
coreos: units: - name: docker.service drop-ins: - name: 50-insecure-registry.conf content: | [Service] Environment=DOCKER_OPTS='--insecure-registry="<Docker RegistryのIPアドレス>:5000"'
■Docker RegistryからDockerイメージを取得
Docker RegistryからDockerイメージを取得します。
docker pull <Docker RegistryのIPアドレス>:5000/jenkins
■ホスト側のファイルを配置
ZIPで固めたJENKINS_HOMEを配置します。
cd /home/core unzip jenkins_home.zip sudo chown -R 1000 /home/core/jenkins_home
■Dockerコンテナの起動
ホスト側のJENKINS_HOMEをマウントして、Dockerコンテナを起動します。
sudo docker run --restart=always --name jenkins -d -p 8080:8080 -v /home/core/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime:ro -e JAVA_OPTS='-Duser.timezone=Asia/Tokyo -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8' <Docker RegistryのIPアドレス>:5000/jenkins
もっとスマートな方法があるような気がしますが・・・とりあえずやりたい事はできました。
http://
保存した状態のDockerコンテナが起動できていますね。設定を変更した、Jenkinsが起動しています。