Docker チートシート

よく使用するDockerコマンドのオプション

目次

Dockerチートシート は、インストールからコンテナの実行、そしてクリーンアップまで、最も重要なコマンド と概念をカバーしています:

docker logo

このガイドは、開発者ツール:モダンな開発ワークフローの完全ガイドの一部です。

インストール

UbuntuへのDockerインストールに関する完全なガイド(公式APTリポジトリ、docker.io、Snap、ルートレスモード、およびComposeプラグインの設定を比較)については、UbuntuにDockerをインストールを参照してください。

インストール後、sudoなしでコマンドを実行する必要がある場合は、ユーザーをdockerグループに追加してください:

sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

インストールガイドでは、dockerグループのメンバーシップに伴うセキュリティ上のトレードオフや、ルートレスの代替手段についても説明しています。

一般的なDockerコマンド

バージョンとシステム情報

docker version          # Docker CLIおよびデーモンのバージョンを表示
docker system info      # Docker環境に関するデータを一覧表示
docker help             # ヘルプインデックスを表示
docker <command> --help # 特定のコマンドのヘルプ情報を表示

ログインとログアウト

docker login            # Docker Hubにログイン
docker logout           # Docker Hubからログアウト

イメージ管理

イメージの一覧表示

docker images           # すべてのイメージを一覧表示
docker images -a        # 中間イメージを含むすべてのイメージを一覧表示

イメージのプル

docker pull <image-name:version> # Docker Hubからイメージをダウンロード

イメージのビルド

docker build -t <image-name> . # カレントディレクトリのDockerfileからイメージをビルド
docker build -f <Dockerfile-path> -t <image-name> . # 特定のDockerfileからイメージをビルド
docker build --build-arg foo=bar . # ビルド引数付きでイメージをビルド
docker build --pull . # FROM命令で参照されているイメージの最新バージョンをプル
docker build --quiet . # 出力なしでイメージをビルド

イメージのタグ付けとプッシュ

docker tag <local-image-name> <username>/<preferred-image-name>
docker push <username>/<preferred-image-name>

イメージの削除

docker rmi <image-name>        # 特定のイメージを削除
docker image prune             # 未使用のイメージを削除
docker image prune -a          # 未使用のすべてのイメージを削除

ダンギングイメージ(未使用のイメージ)の削除

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

イメージのタグ解除

docker rmi repository/image-name:tag

コンテナ管理

コンテナの実行

docker run -itd --name <container-name> <image-name> # コンテナをデタッチモードで実行
docker run -it -p <host-port>:<docker-port> <image-name> # ポートマッピング付きでコンテナを実行
docker run -it --name <container-name> <image-name> # コンテナをインタラクティブモードで実行

コンテナの一覧表示

docker ps                  # 実行中のコンテナを一覧表示
docker ps -a               # すべてのコンテナを一覧表示
docker ps -s               # CPUおよびメモリ使用量付きで実行中のコンテナを一覧表示

コンテナの開始、停止、再起動

docker start <container-name>   # 停止したコンテナを開始
docker stop <container-name>    # 実行中のコンテナを停止
docker restart <container-name> # コンテナを再起動

コンテナの削除

docker rm <container-name>      # 停止したコンテナを削除
docker rm -f <container-name>   # 強制的にコンテナを削除
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) # すべてのコンテナを削除

停止したすべてのコンテナを削除

docker container prune

コンテナへの接続

docker attach <container-name>  # 実行中のコンテナに接続
docker exec -it <container-name> bash # 実行中のコンテナ内でコマンドをインタラクティブに実行

コンテナの検査

docker inspect <container-name> # コンテナを検査
docker logs <container-name>    # コンテナのログを表示
docker port <container-name>    # コンテナのポートマッピングを表示

ネットワーク管理

docker network ls            # すべてのネットワークを一覧表示
docker network create <network-name> # 新しいネットワークを作成
docker network rm <network-name>    # ネットワークを削除

ボリューム管理

docker volume ls             # すべてのボリュームを一覧表示
docker volume create <volume-name> # 新しいボリュームを作成
docker volume rm <volume-name>    # ボリュームを削除
docker run -v <host-path>:<container-path> <image-name> # ボリュームをマウント

Docker Compose

マルチコンテナスタックおよび日常のComposeコマンドについては、Docker Composeチートシートを参照してください。Composeプロジェクトをブート時に開始し、Linuxサーバーの再起動後も存続させる必要がある場合は、systemdでDocker ComposeをLinuxサービスとして実行でユニットファイルと運用上の習慣について説明しています。

基本コマンド

docker-compose up           # docker-compose.ymlで定義されたサービスを開始
docker-compose up -d        # デタッチモードでサービスを開始
docker-compose down         # サービスを停止して削除
docker-compose ps           # 実行中のサービスを一覧表示
docker-compose logs         # サービスのログを表示
docker-compose start        # サービスを開始
docker-compose stop         # サービスを停止
docker-compose pause        # サービスを一時停止
docker-compose unpause      # サービスの一時停止を解除

Dockerfileコマンド

Dockerfileからイメージをビルド

docker build -t <image-name> <Dockerfile-path> # Dockerfileからイメージをビルド

Dockerfileの例

FROM <base-image>
RUN <command>
COPY <source> <destination>
EXPOSE <port>
CMD ["<command>", "<argument>"]

セキュリティとシークレット

Docker Secrets

docker secret create <secret-name> <file> # シークレットを作成
docker secret ls                         # すべてのシークレットを一覧表示
docker secret rm <secret-name>          # シークレットを削除

Dockerセキュリティ

  • Dockerシークレットを使用して、機密データを一元管理し、コンテナに安全に送信します。
  • シークレットは、Docker swarmでの転送中および保存時に暗号化されます。

クリーンアップ

未使用のリソースを削除

docker system prune          # 未使用のデータを削除(イメージ、コンテナ、ネットワーク、ボリューム)
docker image prune           # 未使用のイメージを削除
docker container prune       # 未使用のコンテナを削除
docker network prune         # 未使用のネットワークを削除
docker volume prune          # 未使用のボリュームを削除

タグ未付けのイメージの削除

大規模なビルドが完了した後、docker imagesコマンドで次のような状態になることがあります:

lot of untagged images

<none>タグを持つこれらのイメージを削除するには:

docker rmi $(docker images --filter “dangling=true” -q --no-trunc)

上記の方法は古く、非互換性があります。dangling=trueパラメータは廃止されました。代わりに以下を使用してください:

docker system prune

以下のように尋ねられます:

WARNING! This will remove:
	- all stopped containers
	- all volumes not used by at least one container
	- all networks not used by at least one container
	- all dangling images

この警告に対して「Yes」と回答するかどうかを判断してください。

このチートシートでは、Dockerコンテナ、イメージ、ネットワーク、ボリュームなどを管理するために必要な基本的なコマンドと概念をカバーしています。詳細については、オンラインで利用可能な詳細なガイドやチュートリアルを参照してください。

有用なリンク

購読する

システム、インフラ、AIエンジニアリングの新記事をお届けします。