Dockerは、コンテナ化アプリケーションの構築とデプロイを支援するプラットフォームです。アプリケーション管理のための軽量な仮想化環境を確保することで、オペレーティングシステムの互換性の問題を解決することができます。
Dockerの主要なコマンドラインインターフェース(CLI)は、コンテナを扱う開発者にとっての強力なツールです。基本コマンドdockerを始めとして、CLIは60近くのサブコマンドをサポートしており、そのほとんどがタスク実行の効率化を支援するコマンドライン引数を受け取ります。
Docker CLIを使いこなす
実際にお使いのDocker環境は、オープンソースのDocker Engineかもしれませんし、Docker DesktopのユーザーフレンドリーなGUIインターフェースにもなり得ます。Docker Engine環境ではCLIが主なインターフェースになりますが、Docker Desktopをインストールすればコマンドラインツールも利用できるようになります。
Docker Desktopのユーザーであっても、少なくともこの20の必須コマンド(docker)に慣れれば、CLIを使いこなすことができるはずです。
知っておくべきDockerコマンド
それでは、おすすめのDockerコマンドを一挙ご紹介します。
1. docker system
docker systemコマンドはDocker環境の検査と管理に役立ちます。特定の管理関連タスクを実行するコマンドライン引数をサポートしています。
df:ディスクの使用状況を表示するprune:使用していないネットワーク、コンテナ、イメージ、ボリュームを削除info:システム関連情報を表示events:システムイベントのログをリアルタイムで表示
以下は、docker system prune を実行した後の最初のプロンプトです。

docker system prune を出力する2. docker context
このコマンドは、さまざまなコンテキストをナビゲートし、設定するのに有用です。Dockerでは、コンテキストには名前、トランスポート層のセキュリティ情報、エンドポイントの設定、オーケストレータが含まれます。
docker context 引数の一部を以下にご紹介します。
ls:デフォルトのコンテキストの詳細を表示inspect [CONTEXT}:指定したコンテキストを検査create [CONTEXT]:新しいコンテキストを作成use [CONTEXT]:コンテキストを切り替える
以下はdocker context ls からの出力例です。

docker context ls を出力する3. docker pauseとunpause
docker pause コマンドは、コンテナで有効になっているプロセスを一時停止します。これを実行するには、以下のようにコンテナ名を指定します。
docker pause [CONTAINER]
以下は、コンテナを一時停止した後の出力の例です。

docker pause を出力するdocker unpause コマンドは、一時停止したコンテナプロセスを再開することができます。前のコマンドと同様に、以下のようにコンテナ名を指定します。
docker unpause [CONTAINER]
以下は、コンテナの一時停止を解除した後の出力の例です。

docker unpause を出力する4. docker rm
このコマンドはコンテナ、ボリューム、ネットワークを削除します。属性に基づいて削除するコンポーネントを選択できます。例えば、実行中のコンテナや指定したすべてのコンテナを強制的に削除することが可能です。
docker rm [CONTAINER] は、名前が指定されたコンテナを削除します。このコマンドの出力は以下の通りです。

docker rm を出力する5. docker rmi
このコマンドを使用してイメージを削除できます。単一のイメージを削除することも、複数のイメージを一度に削除することも可能です。削除するイメージは短いIDか長いIDで指定します。このコマンドはホストノードをクリーンで効率的に保つために重要です。
イメージ削除のコマンドは以下のような構造になっています。
docker rmi [IMAGE ID]
以下がその出力例です。

docker rmi を出力する6. docker volume
このコマンドを使うと、Dockerでボリュームを管理できます。ボリュームの作成、削除、一覧表示、検査に使用できます。
docker volumeの引数には以下のようなものがあります。
create [OPTIONAL NAME]:新しいボリュームを作成する(ボリューム名を指定するか、Dockerにランダムな名前を生成させることができます)ls:利用可能なボリュームを一覧表示するinspect [NAME]:ボリュームの詳細情報を表示rm [NAME]:Dockerからボリュームを削除
以下はボリューム作成後の出力の例です。

docker volume create を出力する7. docker search
このコマンドを使うと、Docker Hubからイメージを検索し、それを自分のマシン上でコンテナとして実行できます。ウェブサイトにアクセスすることなく、Docker Hubのレジストリイメージにアクセス可能です。
コマンドは、docker searchのような構造になっています。検索するイメージの名前を指定したり、フィルタを作成したりできます。
クエリと出力例を以下に示します。
docker search --filter is-official=true --filter stars=500 mysql

docker search を出力する8. docker push
docker pushコマンドを使うと、Docker Hubレジストリやプライベートリポジトリでイメージを共有できます。
コマンドの構造は以下のようになります。
docker push [OPTIONS] NAME[:TAG]
[OPTIONS]を使って-disable-content-trustを設定できます。
デフォルトで値はtrueであり、この値を含めることは必須ではありません。
NAME[:TAG]を使用するには、レジストリ名、リポジトリ名、イメージタグを使用する必要があります。
以下はdocker pushからの出力例です。

docker push を出力する9. docker pull
このコマンドは、プライベートまたはパブリックレジストリのリポジトリからDockerイメージをダウンロードします。
コマンドは次のように機能します。
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
このコマンドにより、コンテナ型アプリケーション作成時にはいつでも、新しいイメージを作成する代わりに既存のイメージを使用することができます。
以下の例は、docker pullコマンドの出力を示しています。

docker pull を出力する10. docker ps
デフォルトでは、このコマンドは実行中のすべてのコンテナの一覧を表示します。ただし、ディスク使用量サイズ、リンクしているコンテナ、ラベルなどの属性に基づいてコンテナを一覧表示するフラグを追加可能です。
コマンドは以下のような構造になっています。
docker ps [OPTIONS]
引数には以下のものがあります。
-a:実行中および終了したコンテナの一覧を表示-s:各コンテナのディスク上のサイズと仮想サイズを表示
この2つは、次のように一緒に使うことができます。
docker ps -as
以下は、docker psコマンドの出力例です。

docker ps コマンドを出力する11. docker tag
このタグを使って、バージョンなどのメタデータをイメージに追加できます。タグは通常、イメージのビルド時に作成されますが、docker tagコマンドを使えば、後からタグを追加することができ、実質的にターゲットイメージのエイリアスを作成することが可能です。
このコマンドは次のような構造になっています。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
以下の例では、「redis」という名前のイメージを列挙しています。イメージにバージョン番号(「2.0」)をタグ付けした後、新しいエイリアスと元々タグ付けされていたイメージが一覧として表示されます。

docker tag を出力する12. docker rename
コンテナの名前を変更するには、このコマンドを使用します。複数のコンテナがあり、目的に応じて区別したい場合に便利です。
このコマンドは以下のような構造になっています。
docker rename [OLD_NAME] [NEW_NAME]
以下は、docker renameコマンドの前後の出力例です。

docker rename を出力する13. docker commit
このコマンドを使うと、コンテナのファイルを変更した後に新しいイメージを作成できます。インタラクティブなシェルを使ってコンテナをデバッグできるようになるため、重要な機能です。
このコマンドは以下のような構造になっています。
docker commit [CONTAINER_ID] [name-of-new-image]
docker commitコマンドの例と出力は以下の通りです。

docker commit を出力する14. docker network
これはネットワーク管理コマンドであり、サービスとコンテナを接続することで強力なアプリケーションの作成に活用できます。
コマンドは以下のような構造になっています。
docker network [OPTIONS]
引数には以下のものがあります。
connect:コンテナをネットワークに接続create:新しいネットワークを構築disconnect:実行中のコンテナをネットワークから切り離すrm:単一または複数のネットワークを削除
以下は、docker network createコマンドの出力例です。

docker network create を出力する15. docker history
このコマンドを使うと、指定したイメージのサイズを含む履歴が表示されます。イメージがどのように作成されたかなどを理解するのに有用です。
コマンドは以下のような構造になっています。
docker history [IMAGE]
以下は、redis:latestというイメージに関連する履歴です。

docker history を出力する16. docker update
このコマンドでコンテナの設定を変更できます。コンテナがDockerホストリソースを消費しすぎるのを防ぐのに有用です。コマンドの書き方は以下の通りです。
docker update [OPTIONS] [CONTAINER]
オプションには次のようなものがあります。
--restart:コンテナ再起動ポリシーを更新する--memory:コンテナのメモリ制限を設定する--cpus:割り当てCPU数の設定
以下は、docker updateコマンドの出力例です。

docker update を出力する17. docker plugin install
このコマンドでプラグインを管理できます。Dockerホストの設定を変更することなく新しい機能を追加できるため、必要不可欠です。
docker pluginの引数には以下があります。
create:新しいプラグインの作成enable:インストール済みのプラグインを有効にするinstall:新しいプラグインをインストールrm:単一または複数のプラグインを削除ls:プラグインの一覧を表示
以下では、docker plugin installを使ってプラグインを環境に追加しています。次に、docker plugin lsを使ってプラグインの状態を表示します。

docker plugin ls を出力する18. docker container
このコマンドでコンテナを管理できます。特にコンテナの作成、kill、削除などのアクションを実行するのに便利です。
docker containerで利用できるオプションは以下の通りです。
create:コンテナの作成commit:コンテナの変更後に新しいイメージを作成exec:実行中のコンテナ内でコマンドを実行kill:実行中のコンテナを停止ls:Dockerホスト内のコンテナ一覧を表示restart:コンテナの再起動run:イメージからコンテナを作成して実行rm:Dockerホストからコンテナを削除
以下はdocker containerコマンドの出力例です。

docker container restart を出力する19. docker logs
このコマンドはコンテナからログを取得します。コンテナの操作に関する洞察を得ることができ、デバッグ時に不可欠な選択肢です。
以下はdocker logsコマンドからの出力例です。

docker logs を出力する20. docker swarm
このコマンドは、Docker Swarm─Dockerを実行し、クラスタで一緒に動作するように構成されたマシン(仮想または物理的)のグループ─の管理を支援します。このコマンドを使えば、Swarmを簡単にセットアップして活用できます。
以下はdocker swarmのオプションには以下のようなものがあります。
init:Swarmを開始join:Swarmに参加leave:Swarmから離脱update:Swarmを更新
以下は、docker swarm initコマンドの例です。

docker swarm init を出力するまとめ
Dockerはコンテナ型アプリケーションを構築・管理するのに効果的なツールです。CLIの分かりやすいコマンドを使って、複雑なアプリケーションの作成と操作を簡単に行うことができます。
上記の20のコマンドをマスターすることで、コンテナ化を用いたアプリケーションの開発をスピードアップできるはずです。
Kinstaでは、多くのWordPress専用マネージドクラウドサーバーのお客様がDocker-DesktopベースのツールであるDevKinstaを使用してウェブサイトの開発とデプロイを行っています。
これに加えて、Kinstaのウェブアプリケーションサーバーでは、Dockerと好みのGitサービス(Bitbucket、GitHub、またはGitLab)を使用して、ソースコードのバージョン管理とコンテナ型アプリケーションの高速デプロイを行うことができます。