docker container / image コマンド新旧比較

## 概要

2017年1月18日にリリースされた Docker `v1.13` 以降（今日現在の `v17.03.0-ce` ）は、 `docker` **コマンドラインの命令体系が再編成**されました。本記事では変更に至った背景と、新旧コマンド体系の比較情報を整理します。

## 新しいサブコマンド体系の導入と背景

新しいコマンド体系の導入に至ったのは、`docker` のトップレベル・コマンド群が 40 を越える状況（当時）となったためです。コマンドには頻繁に使うものもあれば、使わないものもあり、再編成されることになりました。
`v1.13`から論理オブジェクト単位にコマンドが再編成されました。これは、「**何**」（コンテナやイメージ、ネットワーク）を、「**どうするか**」（作成、一覧、起動、停止）で扱います。そのため、従来よりもコマンドの利用目的が分かりやすくなります。たとえば、コンテナを管理する `docker container ` サブコマンド群や、イメージを管理する `docker image` サブコマンド群の下で、これまでのコマンドが使えるようになります。

例：

- `docker ps` は `docker container ls` （コンテナの一覧）
- `docker images` は `docker image ls` （イメージの一覧）
- `docker history` は `docker image history` （イメージの履歴）

そして、これらの新コマンドは**従来のコマンドと互換性**があり、サポートは続いています。しかし、`v1.13` 以降、Docker は**新しいコマンド体系の採用を推奨**しています。

## docker container コマンドはコンテナを管理

| 新コマンド                   | 旧コマンド                  | 説明  |
|------------------------------|------------------------------|-------|
| docker container attach      | docker attach                | 実行中のコンテナにアタッチ |
| docker container commit  | docker commit | コンテナに対する変更から新しいイメージを作成 |
| docker container cp  | docker cp | コンテナとローカル間でファイルとディレクトリのコピー |
| docker container create | docker  | 新しいコンテナの作成 |
| docker container diff | docker diff | イメージとコンテナの変更情報を調べる |
| docker container exec | docker exec | 実行中のコンテナ内でコマンド実行 |
| docker container export | docker export | コンテナのファイルシステムをtarアーカイブ化 |
| docker container inspect | docker container inspect | コンテナの詳細情報を表示 |
| docker container kill | docker kill  | コンテナのプロセスを停止(kill) |
| docker container logs | docker logs  | コンテナのログを表示 |
| docker container **ls** | docker **ps**  | コンテナ一覧の表示 |
| docker container pause | docker pause | コンテナのプロセスを一時停止(pause) |
| docker container port  | docker port | コンテナが使用しているポート情報の表示  |
| docker container prune  | (v1.13～)  | 停止中の全コンテナを削除 |
| docker container rename | docker rename | コンテナの名称を変更 |
| docker container restart | docker restart | コンテナを再起動 |
| docker container rm | docker rm | コンテナの削除 |
| docker container run | docker run | 新しいコンテナを実行 |
| docker container start | docker start | 停止中のコンテナを起動 |
| docker container stats | docker stats | コンテナのリソース使用状況を表示 |
| docker container stop | docker stop | 実行中のコンテナを停止 |
| docker container top | docker top | コンテナが実行しているプロセスを表示 |
| docker container unpause | docker unpause | 一時停止中のコンテナを再開 |
| docker container update | docker update | コンテナの（リソース）設定を変更 |
| docker container wait | docker wait | コンテナが停止するまで待機 |

強調部分は新旧コマンドで単純に `docker container コマンド` と実行できないものです。また、リファレンスには書かれていませんが、 `docker container ps`  や `docker container ls` でも `docker ps` と同じ結果が表示できます。

![docker-container.png](https://qiita-image-store.s3.amazonaws.com/0/13002/413dc41a-849e-dc96-4560-2c8e4886900f.png)


## docker image コマンドはイメージを管理

| 新コマンド                   | 旧コマンド                  | 説明  |
|------------------------------|------------------------------|-------|
| docker image build | docker build | Dockerfile からイメージを構築（ビルド） |
| docker image history | docker history | イメージの履歴を表示 |
| docker image import | docker import | tar 形式のファイルを読み込み、イメージを作成 |
| docker image inspect | docker inspect | イメージの詳細情報を表示 |
| docker image load | docker load | tar 形式または標準入力からイメージを読み込む |
| docker image **ls** | docker **images** | イメージ一覧表示 |
| docker image prune  | (v1.13～)  | 使用していないイメージを削除 |
| docker image pull  | docker pull | イメージをレジストリから取得 |
| docker image push | docker push | イメージをレジストリに送信 |
| docker image **rm** | docker **rmi** | イメージを削除 |
| docker image save | docker save | イメージを tar 形式または標準出力にストリーム |
| docker image tag | docker tag | イメージを参照する新しいタグを付ける |

リファレンスには書かれていませんが、 `docker image list` でも `docker images` と同じ結果が表示できます。


![docker-images.png](https://qiita-image-store.s3.amazonaws.com/0/13002/c61ee4a8-3ec6-356f-4300-f5ad995587da.png)


## 参考

- Introducing Docker 1.13 - Docker Blog
 - https://blog.docker.com/2017/01/whats-new-in-docker-1-13/
- Reference documentation - Docker Documentation
 - https://docs.docker.com/reference/