ID , 'noindex' , true)){ echo ''; } ?>

Docker Composeとは?使い方・メリットを解説

Docker Composeとは?使い方・メリットを解説

 

Docker Composeについて、
初心者向けに、概念や使い方などのメモ。

 

Docker Compose とは

Docker Composeとは、
docker-composeコマンドを1 回実行するだけで、複数のコンテナを一度に起動したり停止できる仕組みのこと。

 

起動・停止したいコンテナ群の情報は、
docker-compose.ymlと言うファイルに記述する。

docker-compose

 

 

ここにタイトル
  • Docker Composeとは、docker-composeコマンドを1 回実行するだけで、複数のコンテナを一度に起動したり停止できる仕組み
  • 起動・停止したいコンテナ群の情報は、docker-compose.ymlと言うファイルに記述する。

 

 

Docker Compose のメリット




Docker Composeを使うメリットは下記のようなものがある。

Docker composeを使うメリット
  1. コマンドを打つ手間がかからない、コマンドを打つミスがない。
  2. docker-compose.ymlファイルがあれば、同じ環境をどこでも作成可能。

 

上記、Docker Composeを使うメリットについて簡単に説明していく。

 

①コマンドを打つ手間がかからない、コマンドを打つミスがない。

docker-composeを使う場合、起動するコンテナやオプション情報など全て一つのファイル(docker-compose.yml)に記述してしまうので、docker runでコンテナを起動するのに比べて、コマンドを打つ手間がかからない。また、打ち間違えによるミスがないと言うメリットがある

 

②docker-conpose.ymlファイルがあれば、同じ環境をどこでも作成可能。

またdocker-compose.ymlファイルが一つの環境の設計書のような役割になるため、違う環境でも、このファイルさえあれば、同様の環境が作成可能となる。

docker-compose-yml

 

Docker Composeの使い方

Docker Composeの使い方の手順は大まかに3つある

  1. docker-composeコマンドをインストールする
  2. docker-compose.ymlを用意する
  3. docker-composeを実行する

 

1. docker-composeコマンドをインストールする

docker-composeコマンドは、その名の通り、
Docker Composeを行うためのコマンドだ。

インストールの仕方は色々あるので、ここでは割愛する。
各々調べて各自でやって欲しい

 

2. docker-compose.ymlを用意する

次にdocker-compose.ymlファイルを用意する。

冒頭でも紹介したが、docker-compose.ymlファイルには、起動したいコンテナ群の情報を記述する。つまり、docker-compose.ymlというファイルはいわば環境構築の設計書に相当するファイルである。

version: '3'

services:
  php:
    image: php:7.3-apache
    build: ./
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 8080:80
  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=test
      - PMA_PASSWORD=test
    links:
      - mysql
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin/sessions:/sessions

 

書き方の詳細は割愛するが、
services:直下に、php:や、mysql:など書いてある単位で区切って、
各コンテナの情報を記述していくのが分かる。

 

3. docker-composeを実行する

docker-compose.ymlを準備できたら、
docker-compose.ymlを配置しているディレクトリに移動し、
下記docker-composeコマンドを実行する。

docker-compose up -d

 

docker-composeで記述してあるコンテナが全て起動するので、
docker psなどで確認する。

以上がDocker Composeの大まかな流れ

 

docker-compose のコマンドまとめ

docker-composeコマンドについてよく使うものをまとめる

 

build

サービスのイメージをビルドする。コンテナの起動は行わない。
サービスとは「php」や「mysql」のことを指す。

docker-service

docker-compose.ymlファイルにimage:が書かれている場合は、そのイメージ名がローカルになければ、リモートからプルしてくる。

imageが書かれていない場合、buildに書かれているパスのDockerfileを参考にしてイメージを構築する。docker-compose.ymlと同じ階層にDocerfileを置いておいて、パスを./にしておくのが良いかな?。

キャッシュがあればを優先的にキャッシュ使ってビルドするので、Dockerfileを更新したなどの理由でキャッシュを使いたくない場合は docker-compose build --no-cache とする。

dockerのキャッシュって?

Dockerは一度イメージをビルドするとキャッシュというものを作成する。ブラウザとかにも備わっている、前に使ったデータを保持しておいて高速化を図る仕組みだ。なのでキャッシュがあると2回目以降にビルドするときに、速やかに処理をすることができる。

ただ、キャッシュがあると不便なときもあって、例えばDockerfileを更新したときなどだ。上に紹介したように --no-cache オプションを付けないと、Dockerはキャッシュを使ってimageを構築してしまうので、更新したDockerfileを見てくれず新しいimageが作られない。

 

up

docker-compose up は(imageがなければimageビルドから)コンテナの起動までを行う。

docker-compose up -d というように-dオプションを付けてバックグラウンドで起動させておくことが良い(フォアグラウンドだと、コンソールをもう1タブ開く必要がある、まあ好き好きだけど)。

–buildオプションをつけると、コンテナ起動の前に、イメージのビルドから実施してくれる。Dockerfileに変更があった場合に変更を反映させるために使う。

 

down

docker-compose.ymlに書かれているサービスを参考にコンテナを停止し、そのコンテナとネットワークを削除する。
オプションで--rmi allをつけることでイメージも削除する。

 

start

startコマンドでは既存のコンテナを起動する。コンテナがないと失敗する(upしよう)。

 

stop

stopコマンドでは既存のコンテナを停止する。削除まではしない(削除はdown)。

 

restart

コンテナを再起動する。

 

exec

docker exec同様、コンテナにログインできる。引数にサービス名と実行するコマンドを指定して、実行する。

 

ps

docker-compose ps と打つことで、起動中のコンテナの一覧を確認できる

 

images

docker-compose images と打つことで、対象のイメージの情報を表示する。

 

Docker Composeまとめ

 

Docker Composeまとめ
  • Docker Composeを使うと、複数のコンテナを一つのコマンドで一括管理できる
  • コンテナの情報は全てdocker-compose.ymlファイルに記述する
  • 複数のコンテナを使う場合はとても楽

 

 

Dockerとは?概念・できることを分かりやすく解説するよ

 

https://www.docker.com/

 

 

記事が気に入った方はシェアをお願いします!

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です