こんにちはフロントエンドエンジニアのまさにょんです!
今回は、Dockerの新旧CLIを比較しながら解説していきます。
目次
Docker-CLIの新旧コマンドとは?
ここ最近知ったのですが、どうやらDocker-CLIには新型と旧型があるようです。
以前から、docker container ls や docker image ls の存在は何となく知っていましたが、あまり気にせず docker ps や docker images を使っていたので、ちゃんと調べてみて衝撃を受けました、、、
2017年1月18日にリリースされた Docker
v1.13
以降(今日現在のv17.03.0-ce
)は、
docker
コマンドラインの命令体系が再編成されました。新しいコマンド体系の導入に至ったのは、docker のトップレベル・コマンド群が 40 を越える状況(当時)となったためです。
コマンドには頻繁に使うものもあれば、使わないものもあり、再編成されることになりました。
v1.13から論理オブジェクト単位にコマンドが再編成されました。
これは、「何」(コンテナやイメージ、ネットワーク)を、「どうするか」(作成、一覧、起動、停止)で扱います。
そのため、従来よりもコマンドの利用目的が分かりやすくなります。
たとえば、コンテナを管理する docker container サブコマンド群や、
イメージを管理する docker image サブコマンド群の下で、これまでのコマンドが使えるようになります。
[ 例 ]1. docker ps は docker container ls (コンテナの一覧)
2. docker images は docker image ls (イメージの一覧)
3. docker history は docker image history (イメージの履歴)
そして、これらの新コマンドは従来のコマンドと互換性があり、サポートは続いています。
しかし、v1.13 以降、Docker は新しいコマンド体系の採用を推奨しています。
引用元:docker container / image コマンド新旧比較
上記に記載があるとおり「docker 〜」と言うDocker-CLIのトップレベル・コマンドが増えすぎたため、よりわかりやすくするためにCLIを再編成したという経緯があるようです。
そして、再編成によって「何」(コンテナやイメージ、ネットワーク)を、「どうするか」(作成、一覧、起動、停止)で取り扱うようにCLIの順序が構成されて、コマンドの利用目的が分かりやすくなるように体系化されています。
再編成された中でも、今回紹介するDocker-Container操作は「 docker container 」のコマンド直下に配置され、Docker-Imageの操作は「 docker image 」のコマンド直下に配置されたと言うわけです。
また、Docker は新しいコマンド体系の採用を推奨していますが、旧型のDocker-CLIも依然として使用できます。
新体系コマンドのメリット/デメリット
新型CLIのメリットは、
- 「 docker 対象(target) 操作 オプション 」という形で使用するため、論理的でわかりやすい。
この1点に尽きます。
例えば、旧コマンドの「 docker ps 」(psはprocessの略)は、新コマンドでは「 docker container ls 」に変わりました。
上記を比較すれば分かるとおり、「 docker ps 」(docker に process中のものを表示させる)から、
「 docker container ls 」(docker に container の一覧を表示させる)に変わっています。
docker の次に 操作対象の target の指定が来ているので「何を、どうするのか?」が論理的な流れでわかりやすいです。
逆にデメリットは、
- 記述がどうしても長くなりがちになること。
- 旧型CLIの情報の方が多いこと。
この2点があります。
「 docker 対象(target) 操作 オプション 」という形でコマンドを入力するため、論理的でわかりやすいですが、記述が長くなってしまいます。
また、新型CLI導入以前からのDocker利用者の発信情報など、ネット上には旧型CLI体系の情報の方が多い状況です。
(2022年現時点でも、旧型CLI体系の情報の方が多いような印象を受けます、、、)
Docker初心者には、どちらがおすすめなのか?
Docker初心者には、新型CLIの方がおすすめです!
なぜなら、「 docker 対象(target) 操作 オプション 」という形が論理的で覚えやすいからです。
ただ、ネット情報は旧型CLIの方が多いので、旧型CLIの情報は、新型CLIに置き換えて考えながら(変換しながら)実践学習していくのがいいと思います。
また、旧型CLIが、そのうち新型CLIに統合される可能性もあるので、新型CLIを覚えておいた方がいいと点もあります。
docker container コマンドはコンテナを管理する新型Docker-CLI
docker container / image コマンド新旧比較 から「新旧のDocker-CLI比較 Ver. docker container」を引用します。
新型コマンドでは「 docker container 操作 option 」と言う順序で記述していきます。
この表にプラスDockerの公式リファレンスのoption項目を確認すれば格段にコマンド操作が楽になります。
新コマンド | 旧コマンド | 説明 |
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 container ps | 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 image コマンドはイメージを管理する新型Docker-CLI
docker container / image コマンド新旧比較 から「新旧のDocker-CLI比較 Ver. docker image」を引用します。
新型コマンドでは「 docker image 操作 option 」と言う順序で記述していきます。
この表にプラスDockerの公式リファレンスのoption項目を確認すれば格段にコマンド操作が楽になります。
新コマンド | 旧コマンド | 説明 |
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 image list | 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の学習・参考書
参考・引用
- docker container / image コマンド新旧比較
- Dockerコマンド、新旧どちらを覚えるべきか?
- 「docker ps」と「docker container ls」に違いはありますか?