Help us understand the problem. What is going on with this article?

DockerComposeの基本

More than 1 year has passed since last update.

概要

CircleCI2.0がリリースされて、よりDockerの必要性を感じています。
社内の基本インフラをきちっと管理する為にも、Dockerの再復習のターンがやってきました。
今回はdocker-compose.ymlの主な記法、DockerComposeの主なコマンドをまとめました。

DockerCompose概要

  • ホスト上の複数のコンテナを一元管理する為のツール
  • Docker社が提供
  • docker-compose.ymlで設定を書く
  • たこ

download.png

docker-compose.yml

DockerComposeの設定を書く為のファイル。

image / build

  • ベースイメージを指定する
  • buildの場合はDockerfileのパスを指定する

command

  • コンテナで動かすコマンドを指定する

links / external_links

  • コンテナ間のリンク連携
  • 同一docker-compose.yml内にないコンテナと連携する時は、external_linksを使う

ports / expose

  • コンテナが公開するポートを指定する
  • ""で囲む
    • "8000:80"
  • コンテナポートのみを指定した場合は、ホスト側のポートはランダムで指定される
  • ホスト側に連携せず、リンク機能を使って連携するコンテナにのみポートを公開する時はexposeを利用する

volumes / volumes_from

  • コンテナにボリュームをマウントする時に指定する
  • ホスト側とマウントする場合は、ホスト側のパス:コンテナ側のパスで指定する
  • ボリュームの後ろに:roとする事で読み取り専用にする事ができる
    • 設定ファイルが格納されているボリュームなど
  • 別のコンテナから全てのボリュームをマウントする時はvolumes_formを利用する

enviroment / env_file

  • コンテナ内の環境変数を指定する
  • enviromentは別ファイルの読み込みにも対応している
    • env_file

container_name / labels

  • DockerComposeで作成したコンテナに名前をつける
  • labelsでラベルを設定する子も可能
    • docker inspectで確認可能

Docker Compose コマンド

Dockerと同様にDockerComposeにもコマンドで様々な操作が行える。
ダウンロードはこちらで。

  • docker-composeコマンドは、docker-compose.ymlを保存したディレクトリで発火
    • -fでファイルパスを指定する事もできる
  • サブコマンドの後ろにコンテナ名を付けると指定したコンテナのみを操作可能
docker-compose start web-container

up コマンド

  • コンテナ群の生成+起動を行う

主なオプション

  • -d
    • バックグラウンドで実行
    • プロンプト画面に戻る
  • --no-deps
    • リンクのサービスを起動しない
  • --no-build
    • イメージをビルドしない
  • -t
    • コンテナのタイムアウトを指定
docker-compose up -d

scale コマンド

  • コンテナを生成する数を指定する
docker-compose scale web-container=10 db-container=20

ps / logs コマンド

  • psコマンドで複数コンテナの一覧表示を行う
主なコマンド
  • -q
    • コンテナIDのみを表示する
docker-compose ps
  • logsコマンドでログが確認できる

runコマンド

  • DockerComposeで起動したコンテナで、新たにコマンドを実行したい時に指定する
docker-compose run web-container echo "hello"

start / stop / restart コマンド

  • 複数のコンテナを一括で起動/停止/再起動できる
  • 一部のコンテナのみももちろん可能
docker-compose stop
docker-compsose restart web-container

kill / rm コマンド

  • killコマンドで実行中のコンテナを強制終了できる
    • コンテナにシグナルを送る
      • プロセス間で連絡を取り合う為の仕組み
      • Linuxカーネルで実装されている
  • rmコマンドで複数のコンテナを削除できる
docker kill
docker rm

あとがき

バージョンやインフラ部分で悩むのが一番嫌だし、無駄な時間だと思います。
チーム開発をより効率的にする為にもDockerでインフラ構成を可視化してきちっと管理していきたいですね。
Datadogとも連携したので、また別記事にまとめます。

amazonlinuxベースで社内開発用のDockerfile作成しました。
https://hub.docker.com/r/gemcook/development/

tfrcm
React / ReactNative / Go / TypeScript / AWS / Docker / k8s
https://gemcook.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした