Docker よく使うコマンド チートシート

Docker

本記事では、Docker でよく使うコマンドについてまとめています。
Docker を使うけど、日常的には使わない。
久々に操作するけどあのコマンドオプションなんだっけ。。。?
といった時にヒントになる情報をまとめました。

  1. はじめに
    1. 公式ドキュメント & Docker Hub リンク
    2. TIPS
  2. Dockerfileについて
    1. 【FROM】ベースイメージの指定
    2. 【RUN】コマンドの指定
    3. 【ENV】環境変数の指定
    4. 【COPY】ホストマシンのファイルを作成するイメージにコピー
    5. 【CMD】コンテナ起動時のコマンドを指定
  3. よく使うコマンド集チートシート
    1. 【docker * –help】ヘルプの表示
    2. 【docker image pull】docker image の入手
    3. 【docker image ls】取得済みのイメージの確認
    4. 【docker image inspect】イメージの詳細情報を表示
    5. 【docker image history】イメージの履歴情報を表示
    6. 【docker image build】Dockerfile から image の作成
    7. 【docker image rm】イメージの削除
    8. 【docker container run】コンテナの作成&コンテナの実行
    9. 【docker container ls】コンテナの一覧確認
    10. 【docker container inspect】コンテナの詳細情報を表示
    11. 【docker container start】コンテナの起動
    12. 【docker container stop】コンテナの停止
    13. 【docker container rm】コンテナの削除
    14. 【docker container logs】コンテナのログ確認
    15. 【docker container exec】コンテナに新しいコマンドを実行する
    16. 【docker container top】コンテナ内で実行中のコマンドの確認
    17. 【docker container stats】コンテナの使用状況 CPU / MEM / IO 等の確認
    18. 【docker network ls】ネットワークの一覧表示
    19. 【docker network create】ネットワークの作成
    20. 【docker network rm】ネットワークの削除
    21. 【docker network inspect】ネットワークの詳細表示
    22. 【docker volume ls】ボリュームの一覧表示
    23. 【docker volume create】ボリュームの作成
    24. 【docker volume rm】ボリュームの削除
    25. 【docker volume inspect】ボリュームの詳細表示
  4. Docker 環境構築
    1. Docker Desktop(Windows)
    2. Docker Engine(CentOS)

はじめに

公式ドキュメント & Docker Hub リンク

利用時によくアクセスするであろうサイトのリンクです。

公式ドキュメント(CLIコマンド一覧)

公式ドキュメント(Docker 概要)

公式ドキュメント(Dockerfile リファレンス)

公式ドキュメント(用語集)

Docker Hub

TIPS

Docker に関する特徴やポイントについてです。

・Docker コンテナの起動には Linux マシンが必要
 Docker for windows では起動すると裏でLinux仮想マシンを起動してくれる

・コンテナはコンテナランタイムがあればどこでも動く

・コンテナは隔離された環境であり、設定を入れない限り外部からアクセスできない

・コマンドでコンテナを指定する際は、コンテナ名 or コンテナID で指定可能

Dockerfileについて

【FROM】ベースイメージの指定

FROM ubuntu:24.10

【RUN】コマンドの指定

# [TIPS]
#   RUN で実行された結果は、確定され1レイヤとなる。
#   そのため、複数のコマンドをまとめてRUNに指定することで、サイズを小さくできる。
RUN apt-get update
RUN touch /tmp/sample_file.txt
RUN echo "dummy message." >> /tmp/sample_file.txt

# 以下も同じ結果になるが、イメージサイズが小さくなる
RUN apt-get update
    && touch /tmp/sample_file.txt
    && echo "dummy message." >> /tmp/sample_file.txt

【ENV】環境変数の指定

ENV TZ=Asia/Tokyo

ENV DEMO_ENV=demotext

【COPY】ホストマシンのファイルを作成するイメージにコピー

COPY ./my.cnf /etc/my.cnf

COPY ./httpd.conf /etc/httpd/conf/httpd.conf

【CMD】コンテナ起動時のコマンドを指定

# CMD ["実行ファイル","パラメータ1","パラメータ2"]
CMD ["php","-r","phpinfo();"]

よく使うコマンド集チートシート

【docker * –help】ヘルプの表示

# 各コマンドの help 一覧
docker --help
docker run --help
docker exec --help
docker ps --help
docker build --help
docker pull --help
docker push --help
docker images --help
docker login --help
docker logout --help
docker search --help
docker version --help
docker info --help

docker container ls --help
docker container rm --help
docker container port --help

【docker image pull】docker image の入手

# [概要]
#   https://hub.docker.com/
#   docker hub のサイト内で対象のイメージを検索しイメージ名、タグ名を確認しておく

# [使用例]
#   docker pull <イメージ名>:<タグ名>
docker image pull hello-world:latest
docker       pull hello-world:latest                    # 旧コマンド
docker image pull docker.io/library/hello-world:latest  # フルパス指定
docker image pull mysql                                 # タグ名を省略した場合は、latest が自動指定される
docker image pull mysql:8.4.2                           # タグ名でバージョン指定

docker image pull centos:latest
docker image pull ubuntu:24.10
docker image pull httpd:2.4.62-alpine

【docker image ls】取得済みのイメージの確認

docker image ls
docker images       # 旧コマンド

【docker image inspect】イメージの詳細情報を表示

# [TIPS]
#   結果は JSON で返るので、jq コマンドで必要な情報のみに絞り込み可能
docker image inspect hello-world:latest
docker image inspect hello-world:latest | jq '.[].Config.Cmd'   # 起動時のコマンド確認

【docker image history】イメージの履歴情報を表示

# Dockerfile にて指定された命令の内容を確認可能
docker image history hello-world:latest
docker image history mysql:8.4.2

【docker image build】Dockerfile から image の作成

# 最初に Dockerfile のあるフォルダに移動しておく
# コマンド末尾の . は ビルドコンテキストで、カレントディレクトリを指している
# ※コンテキストとは、指定されたパスにあるファイルのこと
docker image build --tag my-ubuntu:tag-1.0 --file Dockerfile .
docker image build --tag my-ubuntu:tag-2.0 --file Dockerfile .

【docker image rm】イメージの削除

# [TIPS]
#   削除対象のイメージは、イメージ名 or イメージID で指定可能
docker image rm hello-world:latest
docker rmi      hello-world:latest # 旧コマンド

【docker container run】コンテナの作成&コンテナの実行

# [TIPS]
#   docker run は内部的に docker create と docker start が同時に実行される
#   デフォルトでは、docker attachも実施される。
# [オプション]
#   --name:<コンテナ名>
#   --rm:コンテナの停止後にコンテナの自動削除
#   -d:--detach:コンテナのバックグラウンド実行
#   -p:--publish:ポートフォワーディング:<ローカルPCのポート番号>:<コンテナのポート番号>
#   -e:環境変数の指定:例) mysql の場合 root ユーザーのパスワード指定が必要
#   -it:コンテナに対話形式で接続(run で起動して、後で、exec --it で接続する方が多いかも? 対話形式のコンテナを --rm で使い捨てるならば、-it は必須)
#   --mount:ボリュームのマウントが可能。type に volume or bind を指定する。mysql のサンプルに例を記載している

# hello-world コンテナの起動(インストール後のテスト用。--rm で自動削除)
docker container run --name helloworld_01 --rm hello-world:latest
docker           run --name helloworld_01 --rm hello-world:latest   # 旧コマンド

# mysql
docker container run --name mysql_01 -e MYSQL_ROOT_PASSWORD=secret-pass -d -p 53306:3306 mysql:8.4.2
docker container run --name mysql_02 -e MYSQL_ROOT_PASSWORD=secret-pass -d -p 53306:3306 mysql:latest
docker container run --name mysql_03 -e MYSQL_ROOT_PASSWORD=secret-pass -d -p 3306:3306 mysql:latest # ポート番号を同じにすることも可能
docker container run --name mysql_04 -e MYSQL_ROOT_PASSWORD=secret-pass -d -p 3306:3306 --mount type=volume,source=demo-volume,destination=/demodir mysql:8.4.2 # 別途作成したボリューム demo-volume を コンテナの /demodir としてマウントする
docker container run --name mysql_05 -e MYSQL_ROOT_PASSWORD=secret-pass -d -p 3306:3306 --mount type=bind,source=/tmp,destination=/demodir mysql:8.4.2          # ホストOSの /tmp ディレクトリを コンテナの /demodir にマウントする

# CentOS
docker container run --name centos_01 -d -it centos:latest

# Apache
docker container run --name httpd_01 -d -p 80:80 httpd:2.4.62-alpine

# 自作イメージから
docker container run --name my-ub_01 -d -it my-ubuntu:tag-1.0
docker container run --name my-ub_02 --rm -it my-ubuntu:tag-2.0

【docker container ls】コンテナの一覧確認

docker container ls -a
docker ps -a            # 旧コマンド

【docker container inspect】コンテナの詳細情報を表示

# [TIPS]
#   結果は JSON で返るので、jq コマンドで必要な情報のみに絞り込み可能
docker container inspect mysql_01
docker container inspect mysql_01 | jq '.[].Name'
docker container inspect mysql_01 | jq '.[].NetworkSettings.IPAddress'

【docker container start】コンテナの起動

docker container start mysql_01
docker           start mysql_01 # 旧コマンド

【docker container stop】コンテナの停止

docker container stop mysql_01
docker           stop mysql_01  # 旧コマンド

【docker container rm】コンテナの削除

docker container rm mysql_01
docker           rm mysql_01    # 旧コマンド

【docker container logs】コンテナのログ確認

# [オプション]
#   -f:--follow:tail -f と同様のイメージ
docker container logs mysql_01
docker container logs -f mysql_01

【docker container exec】コンテナに新しいコマンドを実行する

# [概要]
#   bash 等で、新しく接続を確立する使い方が多い
# [OPTION]
#   -it:コンテナに対話形式で接続
docker container exec -it mysql_01 bash
docker container exec mysql_01 id               # id コマンドを実行
docker container exec mysql_01 ls -al /var/log  # ls コマンドに引数 -al /var/log で実行
docker container exec mysql_01 date --utc       # date コマンドに引数 --utc で実行

【docker container top】コンテナ内で実行中のコマンドの確認

docker container top mysql_01

【docker container stats】コンテナの使用状況 CPU / MEM / IO 等の確認

docker container stats mysql_01

【docker network ls】ネットワークの一覧表示

docker network ls

【docker network create】ネットワークの作成

docker network create                 demo-network-01 # --driver の指定がない場合デフォルトは bridge
docker network create --driver=bridge demo-network-02 # --driver を明示的に指定
docker network create --driver=bridge \
                --subnet=192.168.0.0/16 \
                --gateway=192.168.0.1 demo-network-03 # サブネットとゲートウェイの指定

【docker network rm】ネットワークの削除

docker network rm demo-network-01
docker network rm demo-network-02
docker network rm demo-network-03

【docker network inspect】ネットワークの詳細表示

docker network inspect bridge
docker network inspect host
docker network inspect none

docker network inspect demo-network-01
docker network inspect demo-network-02
docker network inspect demo-network-03

【docker volume ls】ボリュームの一覧表示

docker volume ls

【docker volume create】ボリュームの作成

docker volume create demo-volume

【docker volume rm】ボリュームの削除

docker volume rm demo-volume

【docker volume inspect】ボリュームの詳細表示

docker volume inspect demo-volume

Docker 環境構築

Docker Desktop(Windows)

Windows 環境に Docker 環境を準備します。

Docker Desktop をインストールすることで、Docker Engine や Docker Compose、等のDocker 利用時に必要なコンポーネントが導入されます。以下のサイトを参考にインストールを行います。

Windows
Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how t...

Docker Engine(CentOS)

デプロイ先のサーバ上で Docker を動かすことを想定して、Linux 環境に Docker Engine をインストールします。

以下のサイトを参考にインストールを行います。

Docker CE の入手(CentOS 向け) — Docker-docs-ja 24.0 ドキュメント
# すでに Docker がインストールされている場合削除
yum remove docker \
            docker-client \
            docker-client-latest \
            docker-common \
            docker-latest \
            docker-latest-logrotate \
            docker-logrotate \
            docker-engine

# インストールに必要なパッケージのインストール
yum install -y yum-utils

# リポジトリの追加
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# Docker 関連のパッケージのインストール
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Docker の起動
systemctl status docker
systemctl start docker

# 自動起動の設定
systemctl is-enabled docker
systemctl enable docker

# 動作確認
docker run hello-world