Dockerコマンドチートシート

dockerを使用する際複数のコンテナを同時に使うことはよくある．
しかし

**同時に複数のコンテナ内で操作をしたい**
**dockerdesktopでは操作しにくい**

ことを感じるので，これならコマンドで実行すればいいのではないかと感じた．
コマンドならウィンドウやタブを複数立ち上げればいいので簡単に操作でき，dockerdesktopアプリをバックグラウンドで起動しておけばいいだけである．また不要になったらコマンドウィンドウを閉じればいいだけなので作業効率が上がるのではないかと思う．

そこで本記事ではdockerでよく使うコマンド集を記載する．

:::note info
Docker Desktopは以下のサイトからインストールする．
https://www.docker.com/get-started/
:::

dockerの基本説明と使用方法については以下の記事から．この記事の内容を把握していること前提で説明する．

https://qiita.com/tarakokko3233/items/6f6d03bd6d1e69c9e67e

# 他のチートシート
git/gh コマンド

https://qiita.com/JavaLangRuntimeException/items/6b46551f56e0def76eba

lazygit

https://qiita.com/JavaLangRuntimeException/items/42087d09728d5739d73d

SQL

https://qiita.com/JavaLangRuntimeException/items/f038fbaccdd92fb0308a

Go/Gorm

https://qiita.com/JavaLangRuntimeException/items/d388717fc1436bc3ec9d


C#/.NET/Unity

https://qiita.com/JavaLangRuntimeException/items/7849b32bc223d4aa0247

Ruby・Ruby on Rails

https://qiita.com/JavaLangRuntimeException/items/42d935cf92c212f1c7ec

TypeScript

https://qiita.com/JavaLangRuntimeException/items/5894391c08e0d8e28389

ステータスコード

https://qiita.com/JavaLangRuntimeException/items/ab1bc7b976ed2dfad91c

プルリクエスト・マークダウン記法チートシート

https://qiita.com/JavaLangRuntimeException/items/329eb92a47a07ff4dde8

ファイル操作コマンドチートシート

https://qiita.com/JavaLangRuntimeException/items/16f244606a73f7d106e4

Vim

https://qiita.com/JavaLangRuntimeException/items/0c68ab96ea198e0a7294

VSCode Github Copilot拡張機能

https://qiita.com/JavaLangRuntimeException/items/be13dc3a346cf6e5ee44

OpenAI Assistants API

https://qiita.com/JavaLangRuntimeException/items/1a1abc01e8d7d05dce93

Github API

https://qiita.com/JavaLangRuntimeException/items/4f3551c31679233219ac’

変数・関数(メソッド)・クラス命名規則

https://qiita.com/JavaLangRuntimeException/items/b93865c448f69bcfca4a


# 他のシリーズ記事
**TypeScriptで学ぶプログラミングの世界**
プログラミング言語を根本的に理解するシリーズです．

https://qiita.com/JavaLangRuntimeException/items/cadf49bb419076819963

**情報処理技術者試験合格への道[IP・SG・FE・AP]**
情報処理技術者試験に出題されるコンピュータサイエンス用語の紹介や単語集

https://qiita.com/JavaLangRuntimeException/items/991be402099542ccb936

**IAM AWS User クラウドサービスをフル活用しよう！**
AWSのサービスを例にしてバックエンドとインフラ開発の手法を説明するシリーズです．

https://qiita.com/JavaLangRuntimeException/items/371a334f5a6e07035db5

**AWS UserのGCP浮気日記**
GCPの様子をAWSと比較して考えてみるシリーズ

https://qiita.com/JavaLangRuntimeException/items/527d99e774165a763180

**Project Gopher: Unlocking Go’s Secrets**
Go言語や標準ライブラリの深掘り調査レポートです．

https://qiita.com/JavaLangRuntimeException/items/dc45b412d3fbd2ccb9e8

**Gopher’s Journey: Exploring TCP Protocol**
Goを用いてTCPプロトコルを探求 & 作成するシリーズです．

https://qiita.com/JavaLangRuntimeException/items/38091220106d86651d2b


## 複数のコンテナの実行
複数のコンテナをまとめて実行する．
```bash
docker compose up
```

## まとめてビルド
複数のサービスをまとめてビルドする．
```bash
docker compose build
```

## 複数のコンテナのビルド&実行
複数のサービスをまとめてビルドし，実行する．
```bash
docker compose up --build
```

## 複数のコンテナをバックグラウンドで実行
複数のコンテナをデタッチモードとして起動し，バックグラウンドで実行する．
```bash
docker compose up -d
```

## 複数のコンテナの停止
複数のコンテナをまとめて停止する．
```bash
docker compose stop
```

## 複数のコンテナのリソース削除
複数のコンテナをまとめて停止し，リソース(ボリューム，ネットワーク)を削除する．
```bash
docker compose down
```

## 複数のコンテナの削除
複数のサービスをまとめて削除する．(コンテナが停止中の時のみ)
```bash
docker compose rm
```

## コンテナ内でコマンドを実行する
あるコンテナの中でコマンドを実行する
```
docker compose exec [サービス(コンテナ)名] [コマンド]
```
:::note info
コンテナ内で実行しないと依存関係がインストールされていないローカルマシン上でそのアプリケーションのコマンドは実行できないのでコンテナ内で実行しよう
:::

例えばDjangoでマイグレーションをしたい場合
```bash
docker compose exec web python manage.py migrate
```


## 複数のコンテナの再起動
複数のコンテナをまとめて再起動する．
```bash
docker compose restart
```
## 複数のコンテナのログを出す
あるサービス(コンテナ)のログをだす．指定をしなければすべてのコンテナのログがまとめて出せる．
```
docker compose logs [サービス(コンテナ)名]
```

## 複数のコンテナの状態を表示
複数のコンテナの状態をリストする．
```bash
docker compose ps
```