Docker使い方まとめ

# Dockerコマンド入門

この記事では、Dockerの基本的なコマンドからdocker-composeの使い方など、知っておくべきコマンドを学習したのでそれの備忘録として書いていく。

---

## Dockerの基本コマンド

### 1. `docker run`
```bash
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
```
指定したイメージから新たなコンテナを作成し、起動するコマンド。  
たとえば、Ubuntuのコンテナを起動してbashを利用する場合は、以下のように実行する。
```bash
docker run -it ubuntu /bin/bash
```
- `-it` オプションは、端末を割り当てインタラクティブモードで起動するためのものらしい。

### 2. `docker ps`
```bash
docker ps [OPTIONS]
```
現在実行中のコンテナ一覧を表示するコマンド。  
すべてのコンテナ（停止中も含む）を確認するには、`-a` オプションを使用する。
```bash
docker ps -a
```

### 3. `docker stop`
```bash
docker stop CONTAINER_ID
```
指定したコンテナを停止するコマンド。

### 4. `docker start`
```bash
docker start CONTAINER_ID
```
一度停止したコンテナを再起動するコマンド。

### 5. `docker rm`
```bash
docker rm CONTAINER_ID
```
停止中のコンテナを削除するコマンド。  
すべての停止中コンテナを削除する場合は、以下のように実行できる。
```bash
docker rm $(docker ps -a -q)
```

### 6. `docker images`
```bash
docker images [OPTIONS]
```
ローカルに保存されているDockerイメージの一覧を表示するコマンド。

### 7. `docker rmi`
```bash
docker rmi IMAGE_ID
```
不要になったイメージを削除するコマンド。

### 8. `docker logs`
```bash
docker logs [OPTIONS] CONTAINER_ID
```
指定したコンテナのログを表示するコマンド。  
`-f` オプションを付けるとログを追いかけることができる。
```bash
docker logs -f CONTAINER_ID
```

### 9. `docker exec`
```bash
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
```
既に起動中のコンテナ内で新たなコマンドを実行するためのコマンド。  
たとえば、実行中のコンテナ内でbashシェルを起動するには以下のようにする。
```bash
docker exec -it CONTAINER_ID /bin/bash
```

### 10. `docker build`
```bash
docker build [OPTIONS] PATH | URL | -
```
Dockerfileを元に新たなイメージを作成するコマンド。  
タグを付けたい場合は `-t` オプションを用いる。
```bash
docker build -t my-image .
```

---

## docker-composeのコマンド

### 1. `docker-compose up`
```bash
docker-compose up [OPTIONS]
```
`docker-compose.yml` に定義された全サービスを起動するコマンド。  
バックグラウンドで起動する場合は `-d` オプションを使用する。
```bash
docker-compose up -d
```

### 2. `docker-compose down`
```bash
docker-compose down [OPTIONS]
```
全てのコンテナ、ネットワーク、ボリューム（指定していれば）などを停止・削除するコマンド。
```bash
docker-compose down
```

### 3. `docker-compose build`
```bash
docker-compose build [OPTIONS] [SERVICE...]
```
サービスごとにDockerfileを元にイメージをビルドするコマンド。
```bash
docker-compose build
```
- 起動コマンドと一緒に指定してビルドもできる。(私はこれをよく多用する)
  ```bash
  docker-compose up --build
  ```

### 4. `docker-compose logs`
```bash
docker-compose logs [OPTIONS] [SERVICE...]
```
各サービスのログを表示するコマンド。  
ログをリアルタイムに追いかける場合は `-f` オプションを使用する。
```bash
docker-compose logs -f
```

### 5. `docker-compose restart`
```bash
docker-compose restart [SERVICE...]
```
指定したサービスまたは全サービスを再起動するコマンド。

---

## 追加で知っておくべきコマンド

### 1. `docker system prune`
```bash
docker system prune [OPTIONS]
```
不要なコンテナ、イメージ、ネットワーク、ビルドキャッシュなどを一括で削除するコマンド。  
特にディスク容量を圧迫している場合に有効で、`-a` オプションで未使用のすべてのデータを削除できる。
```bash
docker system prune -a
```

### 2. Dockerボリューム関連コマンド
- **ボリューム一覧の表示**
  ```bash
  docker volume ls
  ```
- **ボリュームの作成**
  ```bash
  docker volume create VOLUME_NAME
  ```
- **ボリュームの削除**
  ```bash
  docker volume rm VOLUME_NAME
  ```

### 3. Dockerネットワーク関連コマンド
- **ネットワーク一覧の表示**
  ```bash
  docker network ls
  ```
- **ネットワークの作成**
  ```bash
  docker network create NETWORK_NAME
  ```
- **ネットワークの削除**
  ```bash
  docker network rm NETWORK_NAME
  ```

### 4. `docker inspect`
```bash
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
```
コンテナ、イメージ、ボリューム、ネットワークなどの詳細情報をJSON形式で表示するコマンド。  
トラブルシュートや設定内容の確認に有用である。

### 5. `docker history`
```bash
docker history [OPTIONS] IMAGE
```
イメージの各レイヤーの変更履歴を表示するコマンド。  
イメージの構築過程を確認するのに役立つ。

### 6. `docker stats`
```bash
docker stats [OPTIONS] [CONTAINER...]
```
実行中のコンテナのCPU、メモリ、ネットワーク、ディスクI/Oなどのリソース使用状況をリアルタイムで表示するコマンド。

---
使いこなすの難しいけど頑張って覚えよう。