【初心者向け】Docker基本コマンド完全ガイド|イメージ・コンテナ操作と便利コマンド12選

Dockerイメージ操作・コンテナ操作などの便利コマンドをわかりやすく解説
2023-08-25
ヒーローイメージ

目次
  1. チートシート
  2. はじめに
  3. 前提条件
  4. Docker 基本コマンド解説
  5. 付録:Dockerコマンド一覧
  6. 参考情報

チートシート

----Dockerイメージ検索----------------
## コマンド書式
docker search [オプション] キーワード
## コマンド実例
docker search linux
## コマンド実例(公式イメージのみ)
docker search --filter is-official=true amazon
## コマンド実例(表示上限数を5件)
docker search --limit 5 linux

----Dockerイメージ取得----------------
## コマンド書式
docker image pull イメージ名:タグ名
## コマンド実例
docker image pull centos
## コマンド実例(タグ名指定)
docker image pull centos:7

----Dockerイメージ一覧取得-------------
## コマンド書式
docker image ls [オプション] [イメージ名[:タグ名]]
## コマンド実例
docker image ls

----Dockerイメージ削除-----------------
## コマンド書式
docker image rm [オプション] イメージID [イメージID...]
# コマンド実行例
docker image rm centos

----Dockerコンテナ作成----------------
## コマンド書式
docker container run [オプション] イメージ名[:タグ名] [コマンド] [引数...]
## コマンド実例
docker container run -d -p 9000:80 nginx
## コマンド実例(ボリューム共有)
docker container run -d -p 9000:80 -v /home/username/html:/usr/share/nginx/html nginx

----Dockerコンテナ一覧確認-------------
## コマンド書式
docker container ls [オプション]
## コマンド実例
docker container ls
## コマンド実例(停止中コンテナも表示)
docker container ls -a
## コマンド実例(合計ファイルサイズ表示)
docker container ls -s

----Dockerコンテナ詳細確認-------------
## コマンド書式
docker container inspect [オプション] コンテナID(もしくはコンテナ名)
## コマンド実例
docker container inspect nginx

----Dockerコンテナ起動-----------------
## コマンド書式
docker container start [オプション] コンテナID(もしくはコンテナ名)
## コマンド実例
docker container start nginx

----Dockerコンテナ停止-----------------
## コマンド書式
docker container stop [オプション] コンテナID(もしくはコンテナ名)
## コマンド実例
docker container stop nginx

----Dockerコンテナ削除-----------------
## コマンド書式
docker container rm [オプション] コンテナID(もしくはコンテナ名)
## コマンド実例
docker container rm nginx
## コマンド実例(起動中コンテナ削除)
docker container rm -f nginx

----Dockerコンテナ内コマンド実行-----
## コマンド書式
docker container exec [オプション] コンテナID(もしくはコンテナ名) コマンド内容
## コマンド実例
docker container exec nginx echo $HOME
## コマンド実例(コンテナログイン)
docker container exec -it nginx /bin/bash

----Dockerコンテナファイル転送-----
## コマンド書式
docker container cp [オプション] ホストのコピー元ファイルパス コンテナID(もしくはコンテナ名):コピー先のファイルパス
## コマンド実例
docker container cp index.html nginx:/usr/share/nginx/html

はじめに

Docker はアプリケーションを 軽量・高速 に実行できるコンテナ型仮想化技術として、現代の開発現場では必須ツールとなりました。
しかし実際に触り始めると、最初にぶつかる壁が「コマンドが多すぎて何から覚えればよいかわからない」という点です。
本記事では、初心者が最短で Docker を扱えるように丁寧に解説します。

前提条件

本ページの説明は、以下のページに記載されている Dockerの基本用語と概念を理解している人 を対象としています。

Docker実行環境が整っていない場合は以下のページを参考にしてください。
【初心者向け】Dockerのインストール・アンインストール完全ガイド(Windows・macOS・Linux対応)
Docker のインストール方法を初心者向けに徹底解説。Windows、Mac、Linux別に、前提条件・手順・注意点をわかりやすく紹介。Docker Desktop の導入からインストール後の動作確認まで、これ1本で迷わず環境構築できます。
palette-code.com
リンクカード

本ページの内容は以下の環境で動作確認を行っています。

  • Docker 20.10.3

Docker 基本コマンド解説

本章では、Dockerコンテナを使った環境構築の実際の流れに沿って各コマンドの使い方を解説していきます。
紹介するコマンドのオプションについては、最低限覚えておいたほうが便利なものに絞って記載します。
本章で紹介するコマンドやオプションは一部です。全ての内容を把握したい場合は、本ページ下部の参考情報を参照してください。

Dockerイメージ操作コマンド

本章では、Dockerイメージを操作するコマンドについて解説します。

Dockerで環境構築する場合、まずは環境のベースとなるDockerイメージを決める必要があります。
DockerイメージはDockerレジストリに登録されているイメージから探します。
Dockerイメージを検索するためには以下のコマンドを利用します。

コマンド書式:Dockerイメージ検索
docker search [オプション] キーワード
オプション 説明
--filter 検索条件を指定します。is-official=trueと指定すると公式イメージのみを検索対象にします。
--limit 検索結果の表示上限件数を指定します。
Note
Docker searchコマンドの検索対象となるDockerレジストリはDocker Hubです。
ここではコマンドを使って検索していますが、Docker Hubの画面上部にある検索バーからもイメージ検索はできます。

例えば「linux」というキーワードでイメージを検索したい場合は以下のとおりです。

docker search linux
実行結果例はこちら
NAME                        DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
alpine                      A minimal Docker image based on Alpine Linux…   10205     [OK]
ubuntu                      Ubuntu is a Debian-based Linux operating sys…   16302     [OK]
debian                      Debian is a Linux distribution that's compos…   4762      [OK]
amazonlinux                 Amazon Linux provides a stable, secure, and …   1330      [OK]
oraclelinux                 Official Docker builds of Oracle Linux.          1011      [OK]
rockylinux                  The official build of Rocky Linux.               169       [OK]
archlinux                   Arch Linux is a simple, lightweight Linux di…   502       [OK]
photon                      Photon OS is an open source minimal Linux co…   182       [OK]
clearlinux                  Official docker build of Clear Linux OS for162       [OK]
(以降省略)

条件を指定して検索したい場合--filterオプションを指定します。
例えば、Dockerイメージには公式イメージと非公式イメージが存在しますが、
公式イメージのみ検索したい場合は、以下のとおりis-official=trueをつけて実行します。

docker search --filter is-official=true amazon
実行結果例はこちら
NAME             DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
amazonlinux      Amazon Linux provides a stable, secure, and …   1330      [OK]
amazoncorretto   Corretto is a no-cost, production-ready dist…   326       [OK]

Docker searchによる検索結果の表示上限数はデフォルトで25件です。
上限数を増やして(もしくは絞り込んで)表示したい場合--limitオプションで表示上限件数を指定します。

実行例:Dockerイメージ検索(上限5件)

docker search --limit 5 linux
実行結果例はこちら
NAME          DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
alpine        A minimal Docker image based on Alpine Linux…   10205     [OK]
ubuntu        Ubuntu is a Debian-based Linux operating sys…   16302     [OK]
debian        Debian is a Linux distribution that's compos…   4762      [OK]
amazonlinux   Amazon Linux provides a stable, secure, and …   1330      [OK]
oraclelinux   Official Docker builds of Oracle Linux.          1011      [OK]

Dockerコンテナ操作コマンド

本章では、Dockerコンテナを操作するコマンドについて解説します。

Docker
Dockerイメージを取得済であれば、DockerイメージからDockerコンテナを作成することができます。
以下のコマンドを利用するとDockerコンテナを(起動させた状態)で作成されます。

コマンド書式:Dockerコンテナ作成
docker container run [オプション] イメージ名[:タグ名] [コマンド] [引数...]
オプション 説明
-d コンテナをバックグラウンドで実行します。
-p ホストに対してコンテナのポート番号を公開します。-p ホスト側ポート番号:コンテナ側ポート番号の書式で記載します。
--rm コンテナ終了時にコンテナを破棄します。
-v

マウントするボリュームを定義します。ホストとコンテナ間でディレクトリ・ファイルを共有するときに利用します。
-v ホスト側ディレクトリパス:コンテナ側ディレクトリパスの書式で利用します。

--name コンテナに名前を割り当てます。
Note
docker container createコマンドを利用すればコンテナを停止状態で作成することができますが、
コンテナの作成と起動を同時に実施するdocker container runコマンドの方が利用頻度は高いです。

例えば Nginx サーバを、待ち受けポートを 9000 に指定して起動する場合は、以下のとおり実行します。
(本手順実行前にあらかじめ対象のDockerイメージ(今回はNginxイメージ)は取得済である必要があります)

docker container run -d -p 9000:80 nginx
実行結果例はこちら
5acf29229c53d0b747ec23cdb676440cbc9062d77271e80344c69863b3000404
Note
Nginxは「世の中で広く利用されているWebサーバ」です。

Nginxサーバが起動していれば、ブラウザで「http://localhost:9000/」にアクセスすると以下のようなページが表示されます。

Nginx Welcome

上記手順でWebサーバを起動することはできましたが、Webページ(HTMLファイル)を修正したい場合はどうしたらよいでしょうか。
やり方はいくつかありますが、ホスト側のファイルを編集し、その結果がコンテナ内のファイルに反映されると便利ですよね。
-vを使うと、(コンテナを実行している)ホスト側とコンテナ側、それぞれが持っているディレクトリを同期させることができます。

docker container run -d -p 9000:80 -v /home/username/html:/usr/share/nginx/html nginx
実行結果例はこちら
4992eedce2515c74ca142a7fd422bb4b389c732d6c079a2ad33151efd4dbcd5a

上記コマンドでは、ホスト側の/home/username/htmlディレクトリと、コンテナ側の/usr/share/nginx/htmlディレクトリが同期されます。 つまり、ホスト側の/home/username/htmlディレクトリ内にHTMLファイルを作成すれば、それがコンテナ側の/usr/share/nginx/htmlディレクトリ内にHTMLファイルが作成されることになります。 /usr/share/nginx/htmlディレクトリは、Webサーバのドキュメントルートになっているため、このディレクトリにHTMLファイルを配置することで、Webページを作成することができます。

試しに、以下のコマンドをホスト側で実行してindex.htmlを作成してください。

echo palette-code >> /home/username/html/index.html

その後、ブラウザで「http://localhost:9000/」にアクセスするとindex.htmlが表示されます。

Nginx Welcome

Docker その他便利コマンド

本章では、これまで紹介したコマンド以外の、便利なコマンドについて解説します。

Dockerコンテナの起動が成功した後でも、コンテナ内で動作するアプリが期待通りの動作をしない場合など、コンテナ内の状態を確認するために、コンテナ上のシェルでコマンドを実行したいケースがあります。

Dockerコンテナ内でコマンドを実行するためには以下のコマンドを利用します。

コマンド書式:コンテナ内コマンド実行
docker container exec [オプション] コンテナID(もしくはコンテナ名) コマンド内容
オプション 説明
-i Dockerコンテナの標準入力を開いたままにします。
-t 仮想ターミナルを割り当てます。-iオプションとセットで用います。

例えばコンテナ内でecho $HOMEを実行したい場合は以下のように実行します。

docker container exec nginx echo $HOME
実行結果例はこちら
/home/username

上記の方法を利用すればコンテナ内でコマンド操作が可能となりますが、コマンドを実行する度にdocker container execで実行するのは冗長です。 その場合はコンテナ内のシェルにログインしてしまった方が効率的です。コンテナ内にログインする場合は以下のとおりに実行します。

docker container exec -it nginx /bin/bash
実行結果例はこちら
root@abcafd6051b9:/#
Note
-it-i-tの組み合わせです。ここでは詳しく解説しませんがコンテナ内にシェルログインしたい場合は、この2つのオプションを付ける必要があります。

コンテナ内にログインした状態になっているので、続けてコンテナ内でコマンド操作が可能になります。 (ログアウトする場合はctrl+dを押します)

ls -l /
実行結果例はこちら
total 4
lrwxrwxrwx   1 root root    7 Aug 14 00:00 bin -> usr/bin
drwxr-xr-x   2 root root    6 Jul 14 16:00 boot
drwxr-xr-x   5 root root  340 Sep  1 15:05 dev
drwxr-xr-x   1 root root   41 Aug 16 09:50 docker-entrypoint.d
-rwxrwxr-x   1 root root 1620 Aug 16 09:50 docker-entrypoint.sh
drwxr-xr-x   1 root root   19 Sep  1 15:05 etc
drwxr-xr-x   2 root root    6 Jul 14 16:00 home
lrwxrwxrwx   1 root root    7 Aug 14 00:00 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Aug 14 00:00 lib32 -> usr/lib32
lrwxrwxrwx   1 root root    9 Aug 14 00:00 lib64 -> usr/lib64
lrwxrwxrwx   1 root root   10 Aug 14 00:00 libx32 -> usr/libx32
drwxr-xr-x   2 root root    6 Aug 14 00:00 media
drwxr-xr-x   2 root root    6 Aug 14 00:00 mnt
drwxr-xr-x   2 root root    6 Aug 14 00:00 opt
dr-xr-xr-x 180 root root    0 Sep  1 15:05 proc
drwx------   2 root root   37 Aug 14 00:00 root
drwxr-xr-x   1 root root   23 Sep  1 15:05 run
lrwxrwxrwx   1 root root    8 Aug 14 00:00 sbin -> usr/sbin
drwxr-xr-x   2 root root    6 Aug 14 00:00 srv
dr-xr-xr-x  13 root root    0 Aug 29 12:32 sys
drwxrwxrwt   1 root root    6 Aug 16 09:50 tmp
drwxr-xr-x   1 root root   66 Aug 14 00:00 usr
drwxr-xr-x   1 root root   19 Aug 14 00:00 var

付録:Dockerコマンド一覧

  • Dockerコマンドは、2017年の v1.13 以降、コマンド体系が変わりました。
  • v20.10.3時点でも旧コマンド体系は利用できますが、今後利用できなくなる可能性があるので、新コマンド体系の利用を推奨します
  • 以下の表は、本ページでは紹介しなかったコマンドも含め、Dockerコマンドをカテゴリ別に一覧に記載しています。
    • 新旧両方のコマンドを記載しています。
表1. Dockerレジストリ操作
新コマンド 旧コマンド コマンド概要
docker login Dockerレジストリにログインします。
docker logout Dockerレジストリからログアウトします。
docker search Docker Hubでイメージ検索します。
表2. docker image : Dockerイメージ操作
新コマンド 旧コマンド コマンド概要
docker image build docker build Dockerfileを基にDockerイメージを作成します。
docker image history docker history Dockerイメージのレイヤー情報を表示します。
docker image import docker import tar形式のイメージファイルから新しいDockerイメージを作成します。
docker image inspect docker inspect Dockerイメージの詳細情報を表示します。
docker image load docker load tar 形式のイメージファイル(もしくは標準入力)から Dockerイメージを読み込みます。
docker image ls docker images Dockerイメージの一覧を表示します。
docker image prune 未使用のDockerイメージを全て削除します。
docker image pull docker pull DockerイメージをDockerレジストリから取得します。
docker image push docker push DockerイメージをDockerレジストリに送信します。
docker image rm docker rmi Dockerイメージを削除します。
docker image save docker save Dockerイメージをtar形式ファイルに保存します。
docker image tag docker tag Dockerイメージにタグを付与します。
表3. docker container : Dockerコンテナ操作
新コマンド 旧コマンド コマンド概要
docker container attach docker attach 起動中のDockerコンテナに接続します。
docker container commit docker commit dockerコンテナに加えた変更を基に新しいDockerイメージを作成します。
docker container cp docker cp dockerコンテナとホスト側でファイルやフォルダをコピーします。
docker container create docker create dockerコンテナを(未起動状態で)作成します。
docker container diff docker diff dockerコンテナのファイルシステムに加えられた変更の差分を確認できます。
docker container exec docker exec dockerコンテナ内でコマンドを実行します。
docker container export docker export dockerコンテナをtar形式ファイルに出力します。
docker container inspect docker inspect dockerコンテナの詳細情報を表示します。
docker container kill docker kill 起動中のDockerコンテナを直ちに停止します。
docker container logs docker logs dockerコンテナのログを表示します。
docker container ls docker ps dockerコンテナの一覧を表示します。
docker container pause docker pause dockerコンテナ内の全プロセスを一時停止します。
docker container port docker port dockerコンテナの通信ポート割り当て状況を表示します。
docker container prune 停止中のDockerコンテナを一括削除します。
docker container rename docker rename dockerコンテナの名前を変更します。
docker container restart docker restart dockerコンテナを再起動します。
docker container rm docker rm dockerコンテナを削除します。
docker container run docker run dockerコンテナを(起動状態で)作成します。
docker container start docker start dockerコンテナを起動します。
docker container stats docker stats dockerコンテナのリソース使用状況をリアルタイム表示します。
docker container stop docker stop dockerコンテナを停止します。
docker container top docker top dockerコンテナ内のプロセスを表示します。
docker container unpause docker unpause 一時停止(pause)状態のコンテナを再開(unpause)します。
docker container update docker update dockerコンテナの(リソース)設定を変更します。
docker container wait docker wait docker コンテナが停止するまでブロックし、その後終了コードを表示します。
表4. docker system : Dockerシステム操作
新コマンド 旧コマンド コマンド概要
docker system df dockerのディスク使用率を表示します。
docker system events docker events サーバからリアルタイムなイベントを取得します。
docker system info docker info dockerが稼働しているホストのシステム情報を表示します。
docker system prune docker prune 利用していないデータを削除します。
表5. docker network : Dockerネットワーク操作
新コマンド 旧コマンド コマンド概要
docker network connect dockerネットワークにDockerコンテナを接続します。
docker network create dockerネットワークを作成します。
docker network disconnect dockerネットワークからDockerコンテナを切断します。
docker network inspect dockerネットワークの詳細情報を表示します。
docker network ls dockerネットワークの一覧を表示します。
docker network prune 未使用のDockerネットワークを一括削除します。
docker network rm dockerネットワークを削除します。
表6. docker volume : ボリューム操作
新コマンド 旧コマンド コマンド概要
docker volume create ボリュームを作成します。
docker volume inspect ボリュームの詳細情報を表示します。
docker volume ls ボリュームを一覧表示します。
docker volume prune 未使用のボリュームを一括削除します。
docker volume rm ボリュームを削除します。

参考情報

docker | Docker Documentation
docker: The base command for the Docker CLI.
docs.docker.com
リンクカード

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト