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 を出力する
docker system prune を出力する

2. docker context

このコマンドは、さまざまなコンテキストをナビゲートし、設定するのに有用です。Dockerでは、コンテキストには名前、トランスポート層のセキュリティ情報、エンドポイントの設定、オーケストレータが含まれます。

docker context 引数の一部を以下にご紹介します。

  • ls:デフォルトのコンテキストの詳細を表示
  • inspect [CONTEXT}:指定したコンテキストを検査
  • create [CONTEXT]:新しいコンテキストを作成
  • use [CONTEXT]:コンテキストを切り替える

以下はdocker context ls からの出力例です。

docker context ls を出力する
docker context ls を出力する

3. docker pauseとunpause

docker pause コマンドは、コンテナで有効になっているプロセスを一時停止します。これを実行するには、以下のようにコンテナ名を指定します。

docker pause [CONTAINER]

以下は、コンテナを一時停止した後の出力の例です。

docker pause を出力する
docker pause を出力する

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

docker unpause [CONTAINER]

以下は、コンテナの一時停止を解除した後の出力の例です。

docker unpause を出力する
docker unpause を出力する

4. docker rm

このコマンドはコンテナ、ボリューム、ネットワークを削除します。属性に基づいて削除するコンポーネントを選択できます。例えば、実行中のコンテナや指定したすべてのコンテナを強制的に削除することが可能です。

docker rm [CONTAINER] は、名前が指定されたコンテナを削除します。このコマンドの出力は以下の通りです。

docker rm を出力する
docker rm を出力する

5. docker rmi

このコマンドを使用してイメージを削除できます。単一のイメージを削除することも、複数のイメージを一度に削除することも可能です。削除するイメージは短いIDか長いIDで指定します。このコマンドはホストノードをクリーンで効率的に保つために重要です。

イメージ削除のコマンドは以下のような構造になっています。

docker rmi [IMAGE ID]

以下がその出力例です。

docker rmi を出力する
docker rmi を出力する

6. docker volume

このコマンドを使うと、Dockerでボリュームを管理できます。ボリュームの作成、削除、一覧表示、検査に使用できます。

docker volumeの引数には以下のようなものがあります。

  • create [OPTIONAL NAME]:新しいボリュームを作成する(ボリューム名を指定するか、Dockerにランダムな名前を生成させることができます)
  • ls:利用可能なボリュームを一覧表示する
  • inspect [NAME]:ボリュームの詳細情報を表示
  • rm [NAME]:Dockerからボリュームを削除

以下はボリューム作成後の出力の例です。

docker volume create を出力する
docker volume create を出力する

7. docker search

このコマンドを使うと、Docker Hubからイメージを検索し、それを自分のマシン上でコンテナとして実行できます。ウェブサイトにアクセスすることなく、Docker Hubのレジストリイメージにアクセス可能です。

コマンドは、docker searchのような構造になっています。検索するイメージの名前を指定したり、フィルタを作成したりできます。

クエリと出力例を以下に示します。

docker search --filter is-official=true --filter stars=500 mysql
docker search を出力する
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 を出力する
docker push を出力する

9. docker pull

このコマンドは、プライベートまたはパブリックレジストリのリポジトリからDockerイメージをダウンロードします。

コマンドは次のように機能します。

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

このコマンドにより、コンテナ型アプリケーション作成時にはいつでも、新しいイメージを作成する代わりに既存のイメージを使用することができます。

以下の例は、docker pullコマンドの出力を示しています。

docker pull を出力する
docker pull を出力する

10. docker ps

デフォルトでは、このコマンドは実行中のすべてのコンテナの一覧を表示します。ただし、ディスク使用量サイズ、リンクしているコンテナ、ラベルなどの属性に基づいてコンテナを一覧表示するフラグを追加可能です。

コマンドは以下のような構造になっています。

docker ps [OPTIONS]

引数には以下のものがあります。

  • -a:実行中および終了したコンテナの一覧を表示
  • -s:各コンテナのディスク上のサイズと仮想サイズを表示

この2つは、次のように一緒に使うことができます。

docker ps -as

以下は、docker psコマンドの出力例です。

docker ps コマンドを出力する
docker ps コマンドを出力する

11. docker tag

このタグを使って、バージョンなどのメタデータをイメージに追加できます。タグは通常、イメージのビルド時に作成されますが、docker tagコマンドを使えば、後からタグを追加することができ、実質的にターゲットイメージのエイリアスを作成することが可能です。

このコマンドは次のような構造になっています。

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

以下の例では、「redis」という名前のイメージを列挙しています。イメージにバージョン番号(「2.0」)をタグ付けした後、新しいエイリアスと元々タグ付けされていたイメージが一覧として表示されます。

docker tag を出力する
docker tag を出力する

12. docker rename

コンテナの名前を変更するには、このコマンドを使用します。複数のコンテナがあり、目的に応じて区別したい場合に便利です。

このコマンドは以下のような構造になっています。

docker rename [OLD_NAME] [NEW_NAME]

以下は、docker renameコマンドの前後の出力例です。

docker rename を出力する
docker rename を出力する

13. docker commit

このコマンドを使うと、コンテナのファイルを変更した後に新しいイメージを作成できます。インタラクティブなシェルを使ってコンテナをデバッグできるようになるため、重要な機能です。

このコマンドは以下のような構造になっています。

docker commit [CONTAINER_ID] [name-of-new-image]

docker commitコマンドの例と出力は以下の通りです。

docker commit を出力する
docker commit を出力する

14. docker network

これはネットワーク管理コマンドであり、サービスとコンテナを接続することで強力なアプリケーションの作成に活用できます。

コマンドは以下のような構造になっています。

docker network [OPTIONS]

引数には以下のものがあります。

  • connect:コンテナをネットワークに接続
  • create:新しいネットワークを構築
  • disconnect:実行中のコンテナをネットワークから切り離す
  • rm:単一または複数のネットワークを削除

以下は、docker network createコマンドの出力例です。

docker network create を出力する
docker network create を出力する

15. docker history

このコマンドを使うと、指定したイメージのサイズを含む履歴が表示されます。イメージがどのように作成されたかなどを理解するのに有用です。

コマンドは以下のような構造になっています。

docker history [IMAGE]

以下は、redis:latestというイメージに関連する履歴です。

docker history を出力する
docker history を出力する

16. docker update

このコマンドでコンテナの設定を変更できます。コンテナがDockerホストリソースを消費しすぎるのを防ぐのに有用です。コマンドの書き方は以下の通りです。

docker update [OPTIONS] [CONTAINER]

オプションには次のようなものがあります。

  • --restart:コンテナ再起動ポリシーを更新する
  • --memory:コンテナのメモリ制限を設定する
  • --cpus:割り当てCPU数の設定

以下は、docker updateコマンドの出力例です。

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 を出力する
docker plugin ls を出力する

18. docker container

このコマンドでコンテナを管理できます。特にコンテナの作成、kill、削除などのアクションを実行するのに便利です。

docker containerで利用できるオプションは以下の通りです。

  • create:コンテナの作成
  • commit:コンテナの変更後に新しいイメージを作成
  • exec:実行中のコンテナ内でコマンドを実行
  • kill:実行中のコンテナを停止
  • ls:Dockerホスト内のコンテナ一覧を表示
  • restart:コンテナの再起動
  • run:イメージからコンテナを作成して実行
  • rm:Dockerホストからコンテナを削除

以下はdocker containerコマンドの出力例です。

docker container restart を出力する
docker container restart を出力する

19. docker logs

このコマンドはコンテナからログを取得します。コンテナの操作に関する洞察を得ることができ、デバッグ時に不可欠な選択肢です。

以下は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 swarm init を出力する

まとめ

Dockerはコンテナ型アプリケーションを構築・管理するのに効果的なツールです。CLIの分かりやすいコマンドを使って、複雑なアプリケーションの作成と操作を簡単に行うことができます。

上記の20のコマンドをマスターすることで、コンテナ化を用いたアプリケーションの開発をスピードアップできるはずです。

Kinstaでは、多くのWordPress専用マネージドホスティングのお客様がDocker-DesktopベースのツールであるDevKinstaを使用してウェブサイトの開発とデプロイを行っています。

これに加えて、Kinstaのアプリケーションホスティングでは、Dockerと好みのGitサービス(BitbucketGitHub、またはGitLab)を使用して、ソースコードのバージョン管理とコンテナ型アプリケーションの高速デプロイを行うことができます。

Steve Bonisteel Kinsta

Kinstaのテクニカルエディター。救急車や消防車を追いかける記者としてキャリアをスタート。1990年代後半からインターネット関連の技術情報を担当している。