What is Docker and How is it Used with the Payara Platform (Japanese)
Published on 07 Feb 2020
by Kenji HasunumaDockerとは? DockerとPayara Server/Payara Microを一緒に使うには?
Dockerとは何か?
Dockerはコンテナを使用したアプリケーションの作成、デプロイ、実行を容易にするプラットフォームです。コンテナには実行に必要なすべてのソフトウェアがバンドルされます。必要な依存関係をパッケージすることにより、細かな構成の相違に関係なく、あらゆるマシンで容易に実行することが可能です。
仮想マシン (VM) に慣れているのであれば、そのコンセプトは基本的には似たものになりますが、より軽量でありホストマシンを有効活用することができます。VMがオペレーティングシステム全体を持つのに対して、コンテナはホスト・オペレーティングシステム上で実行される分離されたプロセスとなります。
Dockerは主にLinuxマシン向けに作られていますが、WindowsおよびMac向けのものも利用可能です。
コンテナはDockerイメージから開始します。Dockerイメージは、Payara Serverとアプリケーションのように、実行に必要なプロセスとファイルを定義した階層構造になっています。
Dockerイメージは階層構造となっているため、各階層で定義されたファイルは異なるイメージとコンテナで読み取り専用の形で共有されます。各コンテナはこれらのファイルの変更履歴をコンテナが存在する間維持します。もしコンテナを再作成しても残る永続的なデータ、例えばデータベースが必要であれば、ボリュームを使用することになります。
Dockerアーキテクチャ
まず、コンテナを実際に実行するDockerエンジンがあります。Dockerエンジンはイメージ、コンテナ、ネットワーク、ストレージ・ボリュームをホストするデーモン・プロセスです。Dockerエンジンはプロセスを独立した形で動作させることができます。
もう一つ、Dockerエンジンのデーモン・プロセスを制御するDockerクライアントがあります。イメージを作成するのと同様に、コマンドをクライアント経由で送信してコンテナを起動・停止することができます。クライアントとデーモン・プロセスはRESTで通信します。Dockerエンジンのデーモンと通信するその他の方法として、Docker APIのJava実装などもあります。
基本的なDockerコマンド
それでは、コマンドライン・ツールを用いてDockerクライアントを詳しく見てゆきましょう。
まだDockerをインストールしていない場合は、Dockerの公式インストールページ.をご覧ください。 コミュニティ版をLinuxマシンにインストールする方法やWindowsまたはMac上でDockerデスクトップを使用する方法についての詳しい情報があります。
すべて正しくインストールされ、起動し、実行されていることを確認するため、コマンドラインから以下のコマンドを実行してください。
docker info
インストレーションに関する情報が表示されます。ここで、infoはDockerエンジンのデーモンに送信されるコマンドです。その他いくつかの重要なコマンドを以下に示します。
- run 必要に応じてDockerイメージをダウンロードし、イメージから新しいコンテナを作成して起動します。
- ls Dockerエンジンによって管理されているすべてのコンテナの一覧を取得します。
- stop コンテナを停止します。変更内容はファイルシステム上に保持されます。
- start コンテナを起動します。
- rm 停止しているコンテナを削除します。このコマンドを実行すると、コンテナ・ファイルシステムのすべての変更内容が失われます。
各コマンドには指定可能なオプションが多数あります。それらの詳細および他のコマンドにつきましては、Dockerの公式ドキュメントまたはPayaraのDockerガイドをご覧ください。
Payara Dockerイメージ
Payara ServerおよびPayara MicroのDockerイメージはDocker Hubからダウンロード可能です。Docker HubはDockerイメージをストアして共有するためのリポジトリです。
Docker Hub上のこれらのイメージを使用して直接コンテナを起動することができます。これらのイメージは拡張することも可能で、必要に応じてカスタマイズしてそれを使用することもできます。
次のセクションでは、これらのイメージの使用例をご覧いただきたいと思います。Dockerイメージは商用環境向けに最適化されてはいますが、開発環境で用いることももちろん可能です。
DockerイメージをPayara Serverと一緒に使用するには?
それでは、公式Dockerイメージを用いてPayara Serverを起動してみましょう。
docker run -d -p 4848:4848 -p 8080:8080 --name payara-test payara/server-full:5.184
オプションとして以下のものを指定しました。
- -d コンテナをバックグラウンドで (分離して) 実行します。
- -p ホストとPayara Serverを実行するプロセスのポートの対応付けを行います。
このDockerプロセスは異なるネットワーク・セグメントで実行されます (Dockerの分離特性の一部です)。このケースでは、管理コンソールのエンドポイントとアプリケーションが使用するHTTPリスナーのデフォルト値と同じポートをローカル・マシンに対応付けています。
--name コンテナに名前を付けることができます。Dockerコンテナは常にID (長い番号で扱いづらい) と名前を持ちます。この名前を指定しなかった場合、Dockerはfurious_heisenberg, agitated_darwin, ... のようなランダムな値 (ニックネーム) を付加します。
payara/server-full:5.184 . これはコンテナの作成で使用するイメージの名前で、 <community>/<repository>:<tag> という形式になっています。ここでは、Payara Server 5.184のイメージを使用します。
コンテナを起動したら、ブラウザからいつものURL http://localhost:4848 でPayaraのWeb管理コンソールにアクセスすることができます。
コンテナを起動してすぐにアプリケーションをデプロイする場合には、以下のようなコマンドを実行します。
docker run -p 8080:8080 -v ~/payara/apps:/opt/payara/deployments --name payara-test payara/server-full:5.184
-v このオプションで使用するDockerボリュームを指定します。この例では、Dockerコンテナ内の /opt/payara/deployments を、ホストの~/payara/apps ディレクトリに対応付けます。
Payara ServerのDockerイメージは、 /opt/payara/deployments 内のアプリケーション (war または ear ファイル) を自動的にデプロイするようあらかじめ構成されています。このケースでは、ディレクトリの対応付けに従って、ローカル・マシンの ~/payara/apps にあるアプリケーションが自動的にデプロイされます。
DockerをPayara Microと一緒に使用するには?
Payara MicroのイメージはPayara Serverと同じような方法で使用することができます。例として、公式のイメージを拡張してアプリケーションを含む新しいイメージを作成する手順についてご説明します。
When you create a file called Dockerfile with the following content:
FROM payara/micro
COPY myapplication.war $DEPLOY_DIR
公式のPayara Microイメージをもとに、Dockerイメージ内のディレクトリにアプリケーションを追加する形でDockerイメージを作成します。デプロイすべきアプリケーションを見つけるためにこのディレクトリがスキャンされます。
Dockerfileとmyapplication.warファイルが含まれるディレクトリから、以下のコマンドを起動してビルドを実行します。
docker build -t myapplication .
- -t このオプションの値には、新しいイメージに付ける名前を指定します。
- . 最後のドットはとても重要で、必要なファイルがどこに存在するのか (この場合はカレント・ディレクトリ) を示します。
新しいイメージを作成したら、PayaraのDockerイメージと同様に実行できます。
docker run -d -p 8080:8080 --name myapplication myapplication
まとめ
Dockerを使用することにより、必要な依存関係をすべて含んだ形で、プロセスを他から分離して実行することが可能になります。
これにより、プログラムを異なる環境下で統一した方法で、かつ仮想マシンを使用する場合よりもずっと手軽に実行することができます。
このブログでは、公式のDocker Payaraイメージを実行するのに必要な基本的なコマンドと、公式イメージをベースにカスタム・イメージを作成する方法についてご説明しました。
Download Docker images for Payara Server and Payara Micro on Docker hub.