docker-composeを使ってみる
docker-composeの概要
環境
項目 | バージョン |
---|---|
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が動いていることが分かります。
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の内部の挙動(ネットワークなど)はもう少し詳細を調べてみたいですね。