長ったらしいタイトルのとおりです。
前提条件
以下が導入されていることを前提とします。
手順
OS XでDockerを動かす
まずOS XでDockerを動かせるようにします。
DockerはLinux向けのソフトウェアなのでVMを挟む必要があります。
OS X → VirtualBox → boot2docker → Docker という構成です。
1. VirtualBox、boot2docker、Dockerをインストールする
Homebrewを利用するのでインストールは簡単です。
$ brew update
$ brew tap homebrew/binary
$ brew cask install virtualbox
$ brew install boot2docker docker
これだけ!
$ boot2docker version
Boot2Docker-cli version: v1.6.2
Git commit: cb2c3bc
$ docker -v
Docker version 1.6.2, build 7c8fca2
インストール出来ました。
2. boot2dockerを実行する
boot2dockerのVMを作成します。
$ boot2docker init
続いて起動。
$ boot2docker up
確認してみます。
$ boot2docker status
running
起動してますね。
3. 環境変数を設定する
先ほど boot2docker up
した時にexport文が表示されたはずです。
これでクライアントからのアクセスが可能になるので実行しましょう。
$ export DOCKER_HOST=tcp://192.168.XXX.XXX:XXXX
$ export DOCKER_CERT_PATH=/Users/your.user.name/.boot2docker/certs/boot2docker-vm
$ export DOCKER_TLS_VERIFY=1
4. Dockerを実行する
ベースとなるイメージをダウンロードします。
今回使用するのはCentOS 6です。
$ docker pull centos:centos6
docker images
でイメージが一覧表示されます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos centos6 b9aeeaeb5e17 3 weeks ago 202.6 MB
ダウンロードされたので実行しましょう。
$ docker run -t -i -v /shared/:/shared centos:centos6 /bin/bash
ざっくりとコマンドの内容を解説します。
-
-t
と-i
は標準入力や端末デバイスに関するオプションです。 -
-v
は共有領域を指定するオプションです。ホスト側のディレクトリ:コンテナ側のディレクトリ
で指定します。 -
centos:centos6
はイメージ名です。 -
/bin/bash
はコンテナで実行するコマンドです。
これでDockerコンテナとしてCentOSを動かすことが出来ました。
CentOSでTomcatを動かす
続いてDockerコンテナのCentOSに各種ソフトウェアをインストールしていきます。
先ほどコマンドに /bin/bash
を指定したので、既にシェルが起動しているはずです。
1. Tomcat、Javaをインストールする
yumとrpmでインストールしていきます。
$ yum -y install yum-plugin-priorities
$ rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm
$ yum -y --nogpgcheck install tomcat6 tomcat6-webapps tomcat6-admin-webapps java-1.7.0-openjdk
それから今回使うWARファイルをTomcatにデプロイします。
$ cp /shared/test.war /var/lib/tomcat6/webapps/.
2. Tomcatを起動する
あとはTomcatを起動するだけです。
$ /etc/init.d/tomcat6 start
Starting tomcat6: [ OK ]
無事に起動されました。
また、システム開始時に自動で起動するようにしておきます。
$ chkconfig tomcat6 on
これでコンテナの設定は完了です。
コンテナから抜けましょう。
$ exit
Dockerのコンテナとイメージ
1. コンテナからイメージを作る
今度は先ほどのコンテナをイメージ化しましょう。
docker ps
でコンテナ一覧を表示します。
-a
オプションで停止しているコンテナも含まれるようになります。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd1bd069a5bf centos:centos6 "/bin/bash" 5 seconds ago Exited (0) 2 seconds ago distracted_perlman
dd1bd069a5bf
がコンテナIDです。
これをイメージ化します。
$ docker commit dd1bd069a5bf centos_with_tomcat
確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos_with_tomcat latest 4d81cb6ac299 7 seconds ago 897.5 MB
centos centos6 b9aeeaeb5e17 3 weeks ago 202.6 MB
centos_with_tomcat
が出来ました。
2. イメージからコンテナを作る
作ったイメージを元にコンテナを立ち上げます。
$ docker run -d -p 80:8080 centos_with_tomcat /sbin/init
-p
はポートフォワーディングの設定です。
次にboot2dockerのIPを調べましょう。
$ boot2docker ip
ここをブラウザで開けばTomcatのデフォルトページが表示されるはずです。
先ほどboot2dockerのポート80をDockerコンテナの8080にマッピングしたので
ポートの指定も不要です。
参考情報
Docker
Tomcat