⑦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が起動しています。
⑥CoreOSでDockerしてみる(PrivateなDockerレポジトリ⇒EPM-Xの場合)
稼働しているEPM-XのDockerコンテナでイメージを作成して、
Docker Registry経由で、他のCoreOSに環境を移してみます。
■起動中のDockerコンテナでDockerイメージを作成
docker stop epm-x docker commit epm-x localhost:5000/epm-x
■Docker Registryに登録
Docker Registryにpushします。
docker push localhost:5000/epm-x
Docker Registryに登録されたイメージ一覧は、WEBブラウザから確認できます。
http://
{"repositories":["epm-x"]}
■クライアント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/epm-x
■Dockerコンテナの起動
取得したDockerイメージで、Dockerコンテナを起動します。
sudo docker run --restart=always --name epm-x -d -i -t -p 80:80 <Docker RegistryのIPアドレス>:5000/epm-x
Dockerサービス起動後に、Docker execコマンドでサービスを起動するようにします。
sudo vi /etc/systemd/system/epm-x.service sudo systemctl enable /etc/systemd/system/epm-x.service
#/etc/systemd/system/epm-x.service [Unit] Description=EPM-X Service After=docker.service Requires=docker.service [Service] ExecStart=/usr/bin/docker exec epm-x bash -c '/etc/init.d/postgresql start && /etc/init.d/httpd start && /etc/init.d/ipftools-tomcat start' [Install] WantedBy=multi-user.target
http://
保存した状態のDockerコンテナが起動できていますね。設定を変更した、EPM-Xが起動しています。
⑤CoreOSでDockerしてみる(PrivateなDockerレポジトリ)
Dockerイメージは、Dockerレポジトリに格納することで、外部に公開することができます。
「docker pull」で、公開されたDockerイメージを利用できます。
Publicなレポジトリとして、Docker Hub等があります。
https://hub.docker.com/
社内業務で使用するDockerイメージは、Publicなレポジトリで外部公開できませんので、
Docker Registryで、PrivateなDockerレポジトリを立てて、社内Lanのみに公開します。
■Docker Registryの起動
下記コマンドで、Docker Registryを起動します。
docker run --restart=always --name registry -d -p 5000:5000 -v /var/registry:/home/core/registry registry:2
・[--restart=always]オプション指定で、OS起動時に自動起動します。
・[-v]オプション指定で、Dockerコンテナが停止しても、/home/core/registryにデータが残ります。(データの永続化)
■Docker Registryに登録
タグ名を付与して、Docker Registryにpushします。
docker tag docker.io/jenkins localhost:5000/jenkins docker push localhost:5000/jenkins docker images localhost:5000 # localhost:5000/jenkins latest c01375678364 6 days ago 711.8 MB
Panamaxからも、ローカルレポジトリが検索できます。
[MANAGE]→[Registories]を選択し、Docker Registryを検索対象に加える。
検索すると、ローカルレポジトリ(Docker Registry)のDockerイメージも表示されます。
④CoreOSでDockerしてみる(Dockerを使って、EPM-Xをインストール)
Dockerを使って、EPM-Xをインストールしてみます。
■EPM-Xとは?
IPA(独立行政法人 情報処理推進機構)が作成した、定量的なプロジェクト管理を支援するツールです。
Trac(Redmine)やSubVersion等が入っています。
http://sec.ipa.go.jp/tool/ipf/index.html
EPM-Xの公式Dockerイメージは公開されていないため、Dockerイメージを作ってみます。
稼働環境であるCentOS5のDockerイメージを元にして、作成します。
■Centos5のDockerイメージを元にして、EPM-XのDockerイメージを作成する
docker pull centos:5 docker run -i -t -d centos:5 /bin/bash docker ps docker attach <コンテナのID> # yum install wget # yum install openssh-clients ※EPM-Xのインストールに必要なので、とりあえず入れておく # wget http://ppma.jp/DataFolder/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89/ipftools-trac-1.0-setup-centos.x86_64.bin # /bin/bash ./ipftools-trac-1.0-setup-centos.x86_64.bin # Ctrlを押したまま、pq で抜ける(exitするとコンテナが終了し、変更が破棄されるので注意) docker commit <コンテナのID> centos/epm-x docker run --restart=always --name epm-x -d -i -t -p 80:80 centos/epm-x
・[dcoker pull 〜]でCentOS5の仮想イメージを取得します。
・[dcoker run 〜]でCentOS5の仮想イメージからコンテナを起動します。
・[docker ps]でコンテナのIDを確認します。
・[dcoker attach 〜]でCentOS5の仮想コンテナ内でコマンドを実行し、EPM-Xをインストールします。
・[docker commit 〜]で現在のコンテナの状態を保存します。(EPM-Xがインストールされた状態が保存される)
・[docker commit 〜]で保存した仮想イメージから、[dcoker run 〜]で、コンテナを起動します。
EPM-Xでは、Apache、Tomcat、PostgresSQLのサービスを起動する必要があります。
通常ならば、chkconfigで自動起動を設定すれば良いのですが、Dockerコンテナを起動しても、サービスは起動してくれません・・・
Dockerコンテナ(のOSイメージ)は、initプロセスではなく、直接プロセスを実行する為、chkconfig on/offの自動起動設定が呼ばれないようです・・・
# chkconfig postgresql on # chkconfig httpd on # chkconfig ipftools-tomcat on
その為、Docker execコマンドで、仮想コンテナ内でコマンドを実行し、サービスを起動します。
docker exec epm-x bash -c '/etc/init.d/postgresql start && /etc/init.d/httpd start && /etc/init.d/ipftools-tomcat start'
毎回、Docker execコマンドを実行するのは面倒なので、
Dockerサービス起動後に、Docker execコマンドを実行するように設定します。
これで、仮想コンテナ内のサービスも自動起動するようになります。
sudo vi /etc/systemd/system/epm-x.service sudo systemctl enable /etc/systemd/system/epm-x.service
#/etc/systemd/system/epm-x.service [Unit] Description=EPM-X Service After=docker.service Requires=docker.service [Service] ExecStart=/usr/bin/docker exec epm-x bash -c '/etc/init.d/postgresql start && /etc/init.d/httpd start && /etc/init.d/ipftools-tomcat start' [Install] WantedBy=multi-user.target
http://
OSにアプリケーションをインストールした状態で、仮想コンテナを作成することもできるので、便利ですね。
仮想コンテナを配置するだけで、WEBアプリケーション等を起動することができます。
③CoreOSでDockerしてみる(Dockerを使って、Jenkinsをインストール)
Dockerを使って、Jenkinsをインストールしてみます。
■Dockerイメージの取得
公式のDockerイメージが配布されていますので、そちらを利用します。
下記コマンドでイメージを取得します。
docker pull jenkins
■Jenkinsコンテナの起動
下記コマンドでコンテナを起動します。
mkdir /home/core/jenkins_home sudo chown 1000 /home/core/jenkins_home 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' jenkins
・[--restart=always]オプション指定で、OS起動時に自動起動します。
・[--name jenkins]でコンテナ名を指定します。
・[-v]オプション指定で、Dockerコンテナが停止しても、/home/core/jenkins_homeにデータが残ります。(データの永続化)
・[-p 8080:8080]でポート番号を指定する。とりあえずそのまま。
・[-v /etc/localtime:/etc/localtime:ro]でホストと時刻同期する。(同期しないとコンテナ内はUTCになる)
・[-e JAVA_OPTS='-Duser.timezone=Asia/Tokyo 〜]でJenkinsのタイムゾーンとファイルエンコードを指定する。
http://
また、Dockerの仮想コンテナは、パラメータで、コンテナ名、ポート番号、データ永続化フォルダが指定できるので、1サーバ内にJenkinsを複数立ち上げることもできます。
JENKINS_HOME等が競合しないので、便利ですね。
sudo docker run --restart=always --name jenkins1 -d -p 8081:8080 -v /home/core/jenkins_home1:/var/jenkins_home jenkins sudo docker run --restart=always --name jenkins2 -d -p 8082:8080 -v /home/core/jenkins_home2:/var/jenkins_home jenkins sudo docker run --restart=always --name jenkins3 -d -p 8083:8080 -v /home/core/jenkins_home3:/var/jenkins_home jenkins
自宅開発環境のアップデート
自宅開発環境アップデートです。
前回の教訓を生かして、こまめにアップデートします。自分への覚書を残しておきます。
■Ubuntuアップデート
VirtualBox上のEclipse等を詰め込んだ、Ubuntu開発環境をアップデート。
デスクトップ左側のランチャーの1番上の「unity-dash」アイコンをクリック→「update」と入力→「ソフトウェアの更新」で手動アップデートします。
Ubuntu15.04→15.10にアップグレード。特に問題なく終了。
■Hyper-V Serverアップデート
Hyper-V ServerのWindows Updateを実行。特に問題なく終了。
Hyper-V上のCentOS5.11は、yum update でアップデート。特に問題なく終了。
Hyper-V上のJenkinsとJenkinsプラグインもアップデート。特に問題なく終了。
②CoreOSでDockerしてみる(Panamaxをインストール)
Panamaxをインストールしてみます。
■Panamaxとは?
オープンソースのWEBアプリケーションです。
Dockerコンテナの管理やインストールをGUI上で実行できます。
http://panamax.io/
■Panamaxをインストール
下記コマンドで、CoreOSにインストールします。
sudo su curl -O http://download.panamax.io/installer/panamax-latest.tar.gz && mkdir -p /var/panamax && tar -C /var/panamax -zxvf panamax-latest.tar.gz cd /var/panamax ./coreos install --stable
http://
Dockerレポジトリを検索して、公開されているDockerコンテナをインストールすることができます。
例えば、Wordpressをインストールする場合、通常なら、WordpressとMySQLをインストールして設定する必要があります。
Dockerなら、Dockerコンテナをインストールするだけで、Wordpressが使用できます。
(Dockerコンテナに、WordpressとMySQL等の必要なソフトウェアがインストール&設定済み)
また、Panamaxを使えば、WEBブラウザ上から、Dockerコンテナをインストールすることができます。
インストール済みのDockerコンテナを一覧表示できます。
設定変更や削除等ができるみたいですね。