Dockerチートシート:基本コマンドをこの1ページに集約

Dockerは、コンテナ化されたアプリケーションを一貫性のある仮想環境やVPS上で構築・テスト・デプロイ・管理できる、人気のオープンソースプラットフォームです。
Dockerは開発における強力なツールですが、多くのコマンドを覚えるには時間と労力がかかります。初心者の方にとっては、Dockerチートシートを手元に用意しておくことで、作業を効率化できるでしょう。
このチュートリアルでは、Dockerの基本的な仕組みと、よく使われるDockerコマンドをわかりやすく解説します。あわせて、ダウンロード可能なチートシートもご用意しています。
Dockerのアーキテクチャ
Dockerのアーキテクチャは、サーバー、クライアント、コンテナ、イメージ、レジストリの5つの主要なコンポーネントで構成されています。
Dockerサーバー
Dockerサーバー(Dockerデーモン)は、コンピュータ上でバックグラウンドで動作し、Dockerコンテナやイメージの管理を行うプログラムです。
Dockerのコマンドラインインターフェース(CLI)を使ってコンテナを作成・実行・管理する際、ユーザーはこのDockerデーモンとやり取りしています。
Dockerデーモンは、システムの起動時にコンテナを自動的に起動・停止させるための重要なプラットフォームコンポーネントです。
Dockerクライアント
Dockerクライアントは、コマンドラインインターフェース(CLI)を通じて、ユーザーがDockerデーモンとやり取りするための手段です。簡単に言えば、コンテナアプリケーションを作成・管理・実行するための、Dockerアーキテクチャの中核的な役割を担っています。
Docker CLIでコマンドを実行すると、Dockerクライアントがそのコマンドをコンピュータ上で動作するDockerデーモンに送信し、指定された処理が実行されます。Dockerクライアントは、ローカルマシンはもちろん、リモートサーバーや仮想サーバーなど、Dockerデーモンとやり取りする必要のある任意のマシンにインストールできます。

Dockerコンテナ
Dockerコンテナは、アプリケーションを実行するために必要なすべての要素を含んだパッケージです。
コンテナは高い移植性を前提に設計されており、開発者のローカル環境からテスト環境へ、あるいはテスト環境から本番環境へと、簡単に移動させることができます。
Dockerイメージ
Dockerイメージは、Dockerコンテナに含めるべき内容を定義したあらかじめ構成されたテンプレートです。多くの場合、イメージはDocker Hubのようなサイトからダウンロードされますが、Dockerfileを使って独自のカスタムイメージを作成することも可能です。
Dockerレジストリ
Dockerレジストリは、Dockerイメージを保存・管理するための中央リポジトリです。サーバーベースのシステムで、Dockerイメージを保存したり他のユーザーと共有したりできるため、アプリケーションの配布やデプロイを簡単に行えます。代表的なDockerレジストリとしては、Docker Hubが広く使われています。
Dockerコマンドチートシート
Dockerの仕組みがわかったところで、次はよく使われるDockerコマンドの例を見ていきましょう。
ビルド関連のコマンド
Dockerでは、buildコマンドを使ってDockerfileからイメージを作成します。以下は、よく使われる主なコマンド例です:
コマンド | 説明 |
docker build | カレントディレクトリ内のDockerfileからイメージを作成 |
docker build https://github.com/docker/rootfs.git#container:docker | リモートのGITリポジトリからイメージを作成 |
docker build -t imagename/tag | タグ付きイメージの作成と識別の容易化 |
docker build https://yourserver/file.tar.gz | リモートのtarアーカイブからイメージを作成 |
docker build -t image:1.0-<<EOFFROM busyboxRUN echo “hello world”EOF | STDINを通じて渡されたDockerfileからイメージを作成 |
クリーンアップ関連のコマンド
システムをクリーンに保ち、ディスク容量を節約するためには、使われていないイメージ・コンテナ・ボリュームを定期的に削除するのがおすすめです。以下のコマンドを活用しましょう:
コマンド | 説明 |
docker image prune | 未使用のイメージを削除 |
docker image prune -a | コンテナに使用されていないすべてのイメージを削除 |
docker system prune | 停止中のコンテナ、未使用のネットワーク、ぶら下がりイメージ、ビルドキャッシュをすべて削除 |
docker image rm image | 特定のイメージを削除 |
docker rm container | 実行中のコンテナを削除 |
docker swarm leave | Swarmクラスタから離脱 |
docker stack rm stackname | 指定したSwarmスタックを削除 |
docker volume rm $(docker volume ls -f dangling=true -q) | ぶら下がり状態のすべてのボリュームを削除 |
docker rm $(docker ps -a -q) | 停止中のすべてのコンテナを削除 |
docker kill $ (docker ps -q) | 実行中のすべてのコンテナを強制停止 |
コンテナ操作のコマンド
以下のコマンドを使って、Dockerコンテナを操作できます:
コマンド | 説明 |
docker start container | コンテナの起動 |
docker stop container | コンテナの停止 |
docker pause container | コンテナの一時停止 |
docker unpause container | コンテナの再開 |
docker restart container | コンテナの再起動 |
docker wait container | コンテナのブロック |
docker export container | コンテナの内容をtarアーカイブとしてエクスポート |
docker attach container | 実行中のコンテナへの接続 |
docker wait container | コンテナの終了待機と終了コードの表示 |
docker commit -m “commit message” -a “author” container username/image_name: tag | 実行中のコンテナをイメージとして保存 |
docker logs -ft container | コンテナのログの追跡 |
docker exec -ti container script.sh | コンテナ内でのコマンド実行 |
docker commit container image | コンテナからの新しいイメージの作成 |
docker create image | イメージからの新しいコンテナの作成 |
コンテナの検査コマンド
状況確認やトラブルシューティングのために、コンテナの状態を確認する必要があることもあります。以下のコマンドを使えば、各コンテナが何をしているのかを把握できます:
コマンド | 説明 |
docker ps | 実行中のコンテナ一覧の表示 |
docker -ps -a | すべてのコンテナ一覧の表示 |
docker diff container | コンテナ内のファイルシステムの変更点の確認 |
docker top container | 指定したコンテナ内で実行中のプロセスの表示 |
docker inspect container | コンテナに関する低レベル情報の表示 |
docker logs container | コンテナのログの取得 |
docker stats container | コンテナのリソース使用状況の確認 |
イメージ管理のコマンド
以下は、よく使われるDockerイメージ管理の基本コマンドです:
コマンド | 説明 |
docker image ls | イメージ一覧の表示 |
docker image rm mysql | イメージの削除 |
docker tag image tag | イメージへのタグ付け |
docker history image | イメージの履歴の表示 |
docker inspect image | イメージに関する低レベル情報の表示 |
実行コマンド
Dockerでは、runコマンドを使って指定したイメージからコンテナを作成します。基本的な構文は以下のとおりです:
docker run (options) image (command) (arg…)
上記の基本構文に続けて、以下のフラグを使用することで動作をカスタマイズできます:
フラグ | 説明 |
–detach , -d | コンテナをバックグラウンドで実行し、コンテナIDを出力 |
–env , -e | 環境変数の設定 |
–hostname , -h | コンテナにホスト名を設定 |
–label , -l | コンテナにメタデータラベルを作成 |
–name | コンテナに名前を割り当て |
–network | コンテナをネットワークに接続 |
–rm | コンテナの停止後に自動削除 |
–read-only | コンテナのファイルシステムを読み取り専用に設定 |
–workdir , -w | コンテナ内で作業ディレクトリを設定 |
レジストリ関連のコマンド
Docker Hubなどのレジストリとやり取りする際は、以下のコマンドを使用します:
コマンド | 説明 |
docker login | レジストリへのログイン |
docker logout | レジストリからのログアウト |
docker pull mysql | レジストリからのイメージ取得 |
docker push repo/ rhel-httpd:latest | レジストリへのイメージのプッシュ |
docker search term | 指定したキーワードでのDocker Hubのイメージ検索 |
サービス関連のコマンド
Dockerのサービスを管理するには、以下の基本コマンドを使用します:
コマンド | 説明 |
docker service ls | Swarmで実行中のすべてのサービスの一覧表示 |
docker stack services stackname | 指定したスタック内のサービス一覧の表示 |
docker service ps servicename | サービスに関連付けられたタスクの一覧表示 |
docker service update servicename | サービスの更新 |
docker service create image | 新しいサービスの作成 |
docker service scale servicename=10 | レプリケーションされたサービスのスケーリング |
docker service logs stackname servicename | サービスのログの表示 |
ネットワーク関連のコマンド
Dockerネットワークとやり取りする場合は、以下のコマンドを使用します:
コマンド | 説明 |
docker network create networkname | 新しいネットワークの作成 |
docker network rm networkname | 指定したネットワークの削除 |
docker network ls | すべてのネットワークの一覧表示 |
docker network connect networkname container | コンテナのネットワークへの接続 |
docker network disconnect networkname container | コンテナのネットワークからの切断 |
docker network inspect networkname | ネットワークに関する詳細情報の表示 |
まとめ
Dockerは、コンテナに挑戦したい方にとって非常に優れたツールです。ただし、コンテナベースの開発に慣れていない場合は、学習のハードルがやや高く感じられるかもしれません。そんなときに便利なのが、コマンドをすぐに確認できるDockerチートシートです。よく使うコマンドを毎回インターネットで検索せずに済むため、作業効率がぐっと上がります。
このチュートリアルでは、Dockerのアーキテクチャの基本を解説し、主要なDockerコマンドを一通りご紹介しました。今回のDockerチュートリアルがお役に立てば幸いです。ご不明な点があれば、お気軽にコメント欄でご質問ください。