Docker, docker-composeコマンド一覧表

# やる事
Docker, docker-composeをいじる時に、初歩的な事なのに毎回リファレンスや誰かの記事を見ている気がしたので、基本的な事全てを一瞬で把握できるように基本的な機能を表でまとめておきます。ほとんど自分用です。

※網羅出来ていないので、随時更新していきます。

# 環境
docker 20.10.7
docker-compose 1.29.2
※2021年7月5日現在の最新バージョンです。


# Dockerコマンド

## 使用イメージ、コンテナ名など

今回は、pythonのイメージを使用しコンテナ名はmycontainerとします。

|種類|使用イメージ|タグ|備考|
|:--:|:--:|:--:|:--:|
|イメージ|python|latest|Dockerhubのpythonのイメージ。最近は軽いと評判のalpine多め。|
|コンテナ名|mycontainer|---|コンテナ名です|


## 構築・起動系

|コマンド名|イメージ作成|コンテナ作成|起動|停止|例|備考|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|pull|〇|×|×|×|docker pull python|タグ指定無しでlatestを取得。デフォルトはdockerhubからだが、別のレジストリからも取得可能。|
|build|〇|×|×|×|docker build -t python:latest .|Dockerfileからイメージを構築。-tオプションでimage名を指定出来る。|
|create|×|〇|×|×|docker create -t -p 8000:8000 --name myproject -v C:\Users\user\myproject:/home/myproject python:latest|コンテナを作成する。-tで疑似ターミナルを割り当て起動し続ける。-pでホスト側に公開するポートを指定、-vでマウントするパスを指定、nameでコンテナ名指定。最後にオプション無しでイメージを指定。|
|run|×|〇|〇|×|docker run (createとオプションはほぼ同じ）python:latest|起動までしてくれる。オプションはcreateに似てる。
|start|×|×|〇|×|docker start mycontainer|指定コンテナの起動|
|stop|×|×|×|〇|docker stop mycontainer|指定コンテナの停止|
|pause|×|×|×|〇※1|docker pause mycontainer|※1.指定コンテナの一時停止|
|unpause|×|×|〇※2|×|docker unpause mycontainer|※2.一時停止した指定コンテナの再開|
|restart|×|×|〇|×|docker restart mycontainer|指定コンテナの再起動|
|kill|×|×|×|〇※4|docker kill mycontainer|※4. 指定のコンテナを停止する。-sでシグナルも指定出来る。デフォルトはSIGKILL。|



## 接続系

|コマンド名|接続|切断|例|備考|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|exec|〇|×|docker exec -it mycontainer bash|bashでエラー吐くなら、shか/bin/shを使用する。|


## 確認系

|コマンド名|確認内容|例|備考|
|:--:|:--:|:--:|:--:|
|ps|コンテナ一覧|docker ps -a|-aで全てのコンテナを表示。オプション無しで起動しているものを表示。|
|images|イメージ一覧|docker images|-aで中間コンテナも表示する。オプション無しだと中間コンテナは非表示。|
|stats|リソース状態|docker stats mycontainer|コンテナのリソース状態をリアルタイム監視出来る。コンテナ指定無しで-aを付けると全てのコンテナが対象。|
|diff|ファイルの変更分の差分|docker diff mycontainer|ファイルシステムで変更したところを出力してくれる。|
|top|実行中のプロセス|docker top mycontainer|コンテナで実行中のプロセスを表示。|
|info|システムの広範囲な情報|docker info|システム情報を表示。|
|logs|コンテナのログの出力|docker logs mycontainer -f|-fでリアルタイムで出力し続ける。|
|history|イメージの履歴の出力|docker history python:latest|イメージの履歴の出力。|
|search|イメージの検索|docker search --limit=100 django|djangoという単語でDocker Hubからイメージを検索する。--limitで出力結果の最大数を決められる。|
|events|リアルタイムでイベントの監視|docker events|dockerシステムのイベントを監視する。オプションで時間指定や、出力結果のフィルタも指定可能。|




## 整理系

|コマンド名|用途|例|備考|
|:--:|:--:|:--:|:--:|:--:|
|rm|コンテナ削除|docker rm mycontainer|-fで強制的に削除、-lでリンクを削除、-vで紐づけられたボリューム削除。|
|rmi|イメージ削除|docker rmi python:latest|-fで強制的に削除|
|rename|コンテナ名変更|docker rename mycontainer newMyContainer|古い名前の次に新しい名前を入力する。|
|tag|イメージにタグ付け|docker tag ed45d5bb6847 python:mypython|docker tag 【ソース】 【ターゲット】で指定する。ソースのところはイメージ名でも可、ターゲットはプライベートリポジトリとかも可。|



# docker-composeコマンド

例としてdocker-compose.ymlのサービス名は以下の様にします。

```docker-compose.yml
version: '3.8'
services:
    api:
        # 省略
    web:
        # 省略
```

__全体を通してdocker-composeコマンドはdocker-compose.ymlのservicesのものを操作対象としている。__
この場合だと、apiとwebの事。

## 構築・起動系

|コマンド名|イメージ作成|コンテナ作成|起動|停止|例|備考|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|pull|〇|×|×|×|docker-compose pull|全てのサービスのイメージを取得する。サービス名指定も出来る。|
|build|〇|×|×|×|docker-compose build|今いるディレクトリのdocker-compose.ymlを元にビルドする。|
|up|〇|〇|〇|×|docker-compose -f docker-compose-dev.yml up -d|-fでファイル名指定出来る。-dでバックグラウンドでコンテナを起動する。デフォルトでイメージが無かったらビルドしてくれるが、--buildオプション付けてと怒られる。ビルドしない指定なども可能。|
|down|×|×|×|〇※1|docker-compose down|※1. コンテナの停止～__削除__まで行う。起動してなかったら削除のみ行う。|
|start|×|×|〇|×|docker-compose start|既存の指定コンテナ起動|
|stop|×|×|×|〇|docker-compose stop|既存の指定コンテナ停止|
|restart|×|×|〇|×|docker-compose restart|停止中あるいは実行中の既存の指定コンテナの再起動をする。|
|pause|×|×|×|〇※2|docker-compose pause|※2. 起動中のコンテナを一時停止状態にする。
|unpause|×|×|〇※3|×|docker-compose unpause|※3. 一時停止状態のコンテナを起動する。
|kill|×|×|×|〇※4|docker-compose kill|※4. 実行中のコンテナを強制終了させる。-sオプションでコンテナに送信するシグナルを指定出来る。デフォルトはSIGKILL。

## 接続系

|コマンド名|接続|切断|例|備考|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|exec|〇|×|docker-compose exec api bash|docker execと同じ。こちらはサービス名を指定して接続できる。-Tオプションは無くても平気。bashでエラー吐くなら、shか/bin/shを使用する。|

## 起動接続
|コマンド名|コンテナ起動|接続|例|備考|
|:--:|:--:|:--:|:--:|:--:|
|run|〇|〇|docker-compose run --rm api bash|1つのサービスに対して、1コマンドを実行出来る。この場合だとapiというサービスにbashコマンドを実行し、起動から接続まで行える。抜け出すとコンテナは停止状態になっている。--rmオプションで起動したらコンテナを削除する。付けないとrunする度にコンテナが生成されるため付けておく。|


## 確認系

|コマンド名|確認内容|例|備考|
|:--:|:--:|:--:|:--:|
|ps|コンテナ一覧|docker-compose ps|指定のコンテナ一覧|
|port|公開ポート|docker-compose port api 8000|「サービス名 port」と指定すると公開されるip:portを表示。|
|logs|ログ|docker-compose logs -f|-fでリアルタイムでログを監視出来る。|
|images|イメージ一覧|docker-compose images|生成済みコンテナで利用しているイメージ一覧を表示。
|config|Composeファイルの検証|docker-compose config --services|--servicesでサービス一覧のみを表示。オプション無しで検証して表示。|
|top|実行中のプロセス|docker-compose top|実行中のプロセスの表示。|
|help|ヘルプの表示|docker-compose help|ヘルプ表示|
|events|各コンテナのイベントの監視|docker-compose events|入力すると受信状態になり、別端末からコマンドを打ったりするとイベントが確認出来る。


## 整理系

|コマンド名|削除対象|例|備考|
|:--:|:--:|:--:|:--:|:--:|
|rm|コンテナ|docker-compose rm|停止中のコンテナの削除|


## その他

|コマンド名|内容|例|備考|
|:--:|:--:|:--:|:--:|:--:|
|bundle|DABの作成|docker-compose bundle|Composeファイルから分散アプリケーションバンドル(Distributed Application Bundle;DAB)を作成する。|