技術メモ

技術メモ

ラフなメモ

docker-composeを使ってみる

docker-composeの概要

  • 複数のDockerコンテナをサービスとして定義/実行するためのコマンドラインツール
  • Docker EngineのAPIにアクセス

環境

項目 バージョン
OS Windows 10 Pro
Docker Docker version 18.09.2
docker-compose docker-compose version 1.23.2

動かしてみる

コンポーズファイルはデフォルトで docker-compose.yml に定義していくので、docker-compose.yml で以下の内容を記述します。

version: '3'

services: 

  wordpress:
    image: wordpress
    ports: 
      - 8888:80
    environment: 
      WORDPRESS_DB_PASSWORD: example

  mysql:
    image: mysql:5.7
    environment: 
      MYSQL_ROOT_PASSWORD: example

docker-compose up -d でコンテナをバックグラウンドで実行します。

D:\Docker>docker-compose up -d
Creating network "docker_default" with the default driver
Pulling wordpress (wordpress:)...
latest: Pulling from library/wordpress
27833a3ba0a5: Pull complete
2d79f6773a3c: Pull complete
f5dd9a448b82: Pull complete
95719e57e42b: Pull complete
cc75e951030f: Pull complete
78873f480bce: Pull complete
1b14116a29a2: Pull complete
887fc426d9b4: Pull complete
e8a2a7e68e47: Pull complete
44116bd4b499: Pull complete
5a7ed133cf7c: Pull complete
a0cc2e7ce3b9: Pull complete
3ea943f2a6e6: Pull complete
b7cbb4ae8469: Pull complete
f1ee59d1627e: Pull complete
480e816f1b42: Pull complete
9803a14680f4: Pull complete
a9d5149d7240: Pull complete
429157ad4a10: Pull complete
Pulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
27833a3ba0a5: Already exists
864c283b3c4b: Pull complete
cea281b2278b: Pull complete
8f856c14f5af: Pull complete
9c4f38c23b6f: Pull complete
1b810e1751b3: Pull complete
5479aaef3d30: Pull complete
1d924ec3d520: Pull complete
1ab7ae63ac60: Pull complete
08aa5f3680e9: Pull complete
a832d0a0972a: Pull complete
Creating docker_mysql_1     ... done
Creating docker_wordpress_1 ... done
D:\Docker>docker-compose ps
指定されたパスが見つかりません。
       Name                     Command               State          Ports
----------------------------------------------------------------------------------
docker_mysql_1       docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
docker_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8888->80/tcp

コンテナが動いていることが分かりましたので、ローカルホストの8888ポートにアクセスします。
以下のようにwordpressが動いていることが分かります。

f:id:tutuz:20190406215956p:plain:w400

docker-compose stop で停止後、docker-compose rm でコンテナを削除します。

D:\Docker>docker-compose stop
Stopping docker_mysql_1     ... done
Stopping docker_wordpress_1 ... done
D:\Docker>docker-compose rm
Going to remove docker_mysql_1, docker_wordpress_1
Are you sure? [yN] y
Removing docker_mysql_1     ... done
Removing docker_wordpress_1 ... done

D:\Docker>docker-compose ps
指定されたパスが見つかりません。
Name   Command   State   Ports
------------------------------

課題

  • コンテナの状態を監視することはできない
    • 耐障害性が弱い
  • 複数のホストでコンテナをスケールすることはできない

所感

あくまでも同一ホスト内でコンテナを複数同時に管理するためのツールという位置づけ。プロダクション環境としては使えなそうです。
Dockerをクラスタ管理する方法については、Swarmなどの別のオーケストレーションツールを使用する必要があります。
Docker-composeの内部の挙動(ネットワークなど)はもう少し詳細を調べてみたいですね。

参考