【Docker入門】docker container / image コマンド | Docker-CLIの新旧コマンドを比較

Docker-CLI

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、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のメリットは、

  1. 「 docker 対象(target) 操作 オプション 」という形で使用するため、論理的でわかりやすい。

この1点に尽きます。

例えば、旧コマンドの「 docker ps 」(psはprocessの略)は、新コマンドでは「 docker container ls 」に変わりました。

上記を比較すれば分かるとおり、「 docker ps 」(docker に process中のものを表示させる)から、

「 docker container ls 」(docker に container の一覧を表示させる)に変わっています。

docker の次に 操作対象の target の指定が来ているので「何を、どうするのか?」が論理的な流れでわかりやすいです。

逆にデメリットは、

  1. 記述がどうしても長くなりがちになること。
  2. 旧型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 attachdocker attach実行中のコンテナにアタッチ
docker container commitdocker commitコンテナに対する変更から新しいイメージを作成
docker container cpdocker cpコンテナとローカル間でファイルとディレクトリのコピー
docker container createdocker新しいコンテナの作成
docker container diffdocker diffイメージとコンテナの変更情報を調べる
docker container execdocker exec実行中のコンテナ内でコマンド実行
docker container exportdocker exportコンテナのファイルシステムをtarアーカイブ化
docker container inspectdocker container inspectコンテナの詳細情報を表示
docker container killdocker killコンテナのプロセスを停止(kill)
docker container logsdocker logsコンテナのログを表示
docker container ls
または
docker container ps
docker psコンテナ一覧の表示
docker container pausedocker pauseコンテナのプロセスを一時停止(pause)
docker container portdocker portコンテナが使用しているポート情報の表示
docker container prune(v1.13~)停止中の全コンテナを削除
docker container renamedocker renameコンテナの名称を変更
docker container restartdocker restartコンテナを再起動
docker container rmdocker rmコンテナの削除
docker container rundocker run新しいコンテナを実行
docker container startdocker start停止中のコンテナを起動
docker container statsdocker statsコンテナのリソース使用状況を表示
docker container stopdocker stop実行中のコンテナを停止
docker container topdocker topコンテナが実行しているプロセスを表示
docker container unpausedocker unpause一時停止中のコンテナを再開
docker container updatedocker updateコンテナの(リソース)設定を変更
docker container waitdocker waitコンテナが停止するまで待機
【 docker container コマンド 】

docker image コマンドはイメージを管理する新型Docker-CLI

docker container / image コマンド新旧比較 から「新旧のDocker-CLI比較 Ver. docker image」を引用します。

新型コマンドでは「 docker image 操作 option 」と言う順序で記述していきます。

この表にプラスDockerの公式リファレンスのoption項目を確認すれば格段にコマンド操作が楽になります。

新コマンド旧コマンド説明
docker image builddocker buildDockerfile からイメージを構築(ビルド)
docker image historydocker historyイメージの履歴を表示
docker image importdocker importtar 形式のファイルを読み込み、イメージを作成
docker image inspectdocker inspectイメージの詳細情報を表示
docker image loaddocker loadtar 形式または標準入力からイメージを読み込む
docker image ls
または
docker image list
docker imagesイメージ一覧表示
docker image prune(v1.13~)使用していないイメージを削除
docker image pulldocker pullイメージをレジストリから取得
docker image pushdocker pushイメージをレジストリに送信
docker image rmdocker rmiイメージを削除
docker image savedocker saveイメージを tar 形式または標準出力にストリーム
docker image tagdocker tagイメージを参照する新しいタグを付ける
【 docker image コマンド 】

Dockerの学習・参考書

参考・引用

  1. docker container / image コマンド新旧比較
  2. Dockerコマンド、新旧どちらを覚えるべきか?
  3. 「docker ps」と「docker container ls」に違いはありますか?

最近の投稿