Ryu's blog

ゆるくアウトプットしていきたい

docker composeの基本まとめ

Dockerfileの記事を以前書きましたが、今回はdocker composeに関して、学んだことをまとめておきたいと思います。

Docker Compose

 簡単に言うと、複数のDockerコンテナを一括で設定することができるツールです。定義や設定はYAMLファイルで記述します。このYAMLファイル1つで複数のDockerコンテナの設定や構築が1コマンドで可能になります。便利ですね!

Overview of Docker Compose | Docker Documentation

実行の流れ

 まずは設定ファイルとなるYAMLファイルの作成を行います。docker-compose.yml ファイルを作成します。(基本的な書き方は後述します。)
docker-compose.yml 書き方の例

version: '3'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

このファイルが存在するディレクトリ上で docker-compose up コマンドを実行することで環境を構築することができます。-d オプションを付けることで、バックグランド実行が可能です。 バックグラウンドで実行した場合、docker-compose stop コマンドでバックグランド実行を止めることができます。

docker-compose.ymlの基本的な書き方

 Docker ComposeのYAMLファイルの書き方について、基本的なことをまとめておきます。

image

 イメージIDやイメージ名を指定する。指定されたイメージを元にDockerコンテナを作成する。イメージタグも指定可能。

build

 Dockerfileのパスを指定する。指定されたDockerfileのビルドを行い、Dockerコンテナを作成する。

command

 Dockerのイメージを実行時、イメージにあるデフォルトコマンドを指定したコマンドに上書きする。

ports

 Dockerコンテナが公開するポート番号を指定する。[HOST:CONTAINER]と指定するか、Dockerコンテナのポート番号のみ指定する。

volumes

 マウントするボリュームの指定を行う。(- /var/lib/mysql )ホストマシンのマウントのパスとコンテナのディレクトリパスを指定可能(- HOST:CONTAINER ) [HOST:CONTAINER:ro]とすることでアクセスモードを読み取り専用にできる。

 別のDockerコンテナへリンクさせる。[SERVICE:ALIAS]とすることでエイリアス名をコンテナ名に付ける事が可能。

expose

 ホストへのポート公開をせずに内部のみにポートを公開する。リンク機能を用いて連携するコンテナのポートを公開するときなどに使用する。(例:データベースサーバー)

environment

 環境変数を追加するときに使用する。配列形式かハッシュ形式で指定が可能です。

environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:
environment:
  - RACK_ENV=development
  - SHOW=true
  - SESSION_SECRET

docker-composeコマンド

 docker-composeのコマンドを簡単にまとめておきます。

  • up コンテナの作成と起動
  • stop コンテナの停止
  • run コンテナの実行
  • rm 停止しているコンテナの削除
  • restart コンテナの再起動
  • ps コンテナの一覧表示
  • kill コンテナの強制停止
  • logs コンテナのログ出力

まとめ

 Dockerは開発などに使用するときにとても便利なツールですので、今後積極的に使っていきたいと思っています。 今回はDocker Composeの基本的な事柄をまとめました。他にも学んだことがあれば書き足していこうと思います。