この記事では、できる限りコマンドラインを使わず
Docker で Web アプリケーションを起動して、
Docker の基本的な利用法を理解していきます。
この 10 分程度のトレーニングを終えれば、
もう開発のためにデータベース・アプリケーションをインストールする必要はありません。
Docker Desktop Dashboard を開いてみよう
Docker を操作したとき、何が起きるかわかりやすいように
Docker Desktop の Dashboard を開いておきましょう。
常駐している Docker Desktop のアイコンを右クリック → [Dashboard] をクリック:
すると、次のようなウィンドウが開きます:
Docker を使って Web アプリを起動してみよう
いきなりですが、Docker で Web アプリケーションを動かします。
“test-docker” というフォルダーを新規作成し、
“docker-compose.yml” というファイルを新規作成し、次の内容を記述します:
version: "3.8"
services:
web:
image: adminer
ports:
- 8080:8080
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
このファイルの内容については次の記事で解説しますが、
効率的に理解するために、まずこのトレーニングをすすめることをお奨めします。
そして、ファイルを作成したフォルダーでターミナルを開き、次のコマンドを実行します:
docker-compose up -d
すると、次のような出力が表示されます:
Creating network "test-docker_default" with the default driver
Pulling web (adminer:)...
latest: Pulling from library/adminer
df20fa9351a1: Pull complete
b358d6dbbdff: Pull complete
0232d962484c: Pull complete
0c1d3ac04d2a: Pull complete
b4e4f852df7e: Pull complete
6a973c07b1a7: Pull complete
81925cc0eeeb: Pull complete
4fce6c58c125: Pull complete
56d61120c3e2: Pull complete
81694e37d7e8: Pull complete
63580de12c3c: Pull complete
5483478c2601: Pull complete
d75c0834e7af: Pull complete
b3b3fdd9c555: Pull complete
50a9fb45e1ec: Pull complete
Digest: sha256:dc0bb811b48d861c4e08f7d52db98b51768243a2a3f656edf698a8a9a3bc4dc4
Status: Downloaded newer image for adminer:latest
Pulling db (mysql:)...
latest: Pulling from library/mysql
6ec8c9369e08: Pull complete
177e5de89054: Pull complete
ab6ccb86eb40: Pull complete
e1ee78841235: Pull complete
09cd86ccee56: Pull complete
78bea0594a44: Pull complete
caf5f529ae89: Pull complete
cf0fc09f046d: Pull complete
4ccd5b05a8f6: Pull complete
76d29d8de5d4: Pull complete
8077a91f5d16: Pull complete
922753e827ec: Pull complete
Digest: sha256:fb6a6a26111ba75f9e8487db639bc5721d4431beba4cd668a4e922b8f8b14acc
Status: Downloaded newer image for mysql:latest
Creating test-docker_web_1 ... done
Creating test-docker_db_1 ... done
Dashboard を確認すると、”test-docker” という行が表示されていますので、
行の中心あたりにマウスのカーソルを合わせクリックします:
すると、ログが表示され、左側に [CONTAINERS] という項目が表示されます:
ログに次の内容が表示されるまで待ちます:
db_1 | 2020-07-28T08:41:11.017766Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.21' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
上記のログは 「MySQL」というデータベース・アプリケーションが起動したことを示しています。
確認してみましょう。
[CONTAINERS] 欄の “test-docker_web_1” という行にマウスのカーソルを合わせると
アイコンがいくつか表示されるので、
一番左の [OPEN IN BROWSER] をクリックします:
ブラウザーで Web ページが表示されましたか?:
Dashboardを確認すると、次のようなログが表示されています:
Attaching to test-docker_web_1
[36mweb_1 | [0m [Tue Jul 28 05:05:06 2020] [::ffff:172.21.0.1]:49264 Accepted
[36mweb_1 | [0m [Tue Jul 28 05:05:06 2020] [::ffff:172.21.0.1]:49262 Accepted
[36mweb_1 | [0m [Tue Jul 28 05:05:07 2020] [::ffff:172.21.0.1]:49264 [200]: GET /
[36mweb_1 | [0m [Tue Jul 28 05:05:07 2020] [::ffff:172.21.0.1]:49264 Closing
URL にアクセスしたので、レスポンスを返す処理が行われていることがわかります。
この Web アプリケーションは Adminer という無料の Web アプリケーションで、
ブラウザー越しにデータベースの管理をすることができます。
Adminer – Database management in a single PHP file
データベースにログインしてみましょう。
ブラウザーに表示されているログインフォームに次のように入力して [ログイン] ボタンをクリックします:
入力項目 | 入力内容 |
---|---|
[データベース種類] | “MySQL” |
[サーバ] | db |
[ユーザ名] | “root” |
[パスワード] | “example” |
[データベース] | 未入力 |
ログインすると、MySQL のデータベースの一覧が表示されます:
ファイルを 1 つ用意してコマンドを 1 つ実行するだけで
web アプリケーションとデータベース・アプリケーションを起動することができました。
用語を覚えよう
コンテナー
Dashboard の [CONTAINERS] に表示された各行を「コンテナー」と言います。
コンテナーは Docker によって構築される仮想環境です。
ホスト
Docker の話題の中では、「コンテナー」との対比として
「Docker を動かしているコンピューター自体」のことを「ホスト」といいます。
Docker Desktop を使っているときは、今使っている PC がホストです。
コンテナーを止めたり動かしたりしてみよう
今、ブラウザーではコンテナーのデータベースアプリケーションにログインしていますが、
それを確認するために、
データベースのコンテナーを止めてブラウザを再読み込みしてみましょう。
Dashboard からコンテナーを止めることができます。
“test-docker_db_1” にマウスのカーソルを合わせると表示されるアイコンの内、
[STOP] をクリックします:
※ “test-docker_web_1” と間違えないように気をつけましょう。
すると、コンテナーがグレーになり、”EXITED (0)” と表示されます。
この状態でブラウザーを再読み込みします。
すると、エラーメッセージが表示され、ログイン画面まで戻されてしまいます:
では、もう一度動かしてみましょう。
Dashboard で “test-docker_db_1” にマウスのカーソルを合わせると表示されるアイコンの内、
[SRART] をクリックします:
すると、再びコンテナーがグリーンになり、”RUNNING” と表示されます:
ブラウザのログインフォームで再度ログインすると
再び MySQL のデータベースの一覧が表示されます:
では、コンテナーを一度に停止してみましょう。
Dashboard 上部のフォルダー名が表示されている部分の右側にあるアイコンの内、
[STOP] をクリックします:
すると、すべてのコンテナーがグレーになり、”EXITED (0)” と表示されます:
この状態でブラウザーを再読み込みすると、
「このサイトにアクセスできません」と表示されます:
先ほどの [STOP] のすぐ左に [START] があることからわかる通り、
すぐにコンテナーを起動することができ、
データベースのデータも保持され続けます。
コンテナーを停止していると、Dashboard に表示され続けます。
もう利用せず、データベースのデータも必要ない場合は
削除した方が Dashboard の見渡しが良くなります。
では、コンテナーをすべて削除してみましょう。
[STOP] のすぐ右にある [DELETE] をクリックします:
すると、コンテナーはすべて削除され、
ディレクトリーが表示されている行も Dashboard からなくなります:
この場合は、
また “docker-compose up -d” コマンドでコンテナーを起動することができますが、
データベースのデータは引き継がれず、新たに初期化されます。
この時点では、実はまだデータベースのデータは失われていませんが、
この時点からデータの回収を行うのは面倒なので
バックアップはコンテナーを削除する前に行うようにしましょう。
アプリケーション開発ではデータを保存する必要はあまりないので、
これだけで十分に役立ってくれることでしょう。
Docker の Dashboard についてさっと確認しました。
次は最初に作成した docker-compose.yml
の内容について見てみましょう: