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

チートシート
----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 20.10.3
Docker 基本コマンド解説
本章では、Dockerコンテナを使った環境構築の実際の流れに沿って各コマンドの使い方を解説していきます。
紹介するコマンドのオプションについては、最低限覚えておいたほうが便利なものに絞って記載します。
本章で紹介するコマンドやオプションは一部です。全ての内容を把握したい場合は、本ページ下部の参考情報を参照してください。
Dockerイメージ操作コマンド
本章では、Dockerイメージを操作するコマンドについて解説します。
- イメージ検索
- イメージ取得
- イメージ一覧確認
- イメージ削除
Dockerで環境構築する場合、まずは環境のベースとなるDockerイメージを決める必要があります。
DockerイメージはDockerレジストリに登録されているイメージから探します。
Dockerイメージを検索するためには以下のコマンドを利用します。
docker search [オプション] キーワード| オプション | 説明 |
|---|---|
--filter |
検索条件を指定します。is-official=trueと指定すると公式イメージのみを検索対象にします。 |
--limit |
検索結果の表示上限件数を指定します。 |
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 for … 162 [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 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 container run [オプション] イメージ名[:タグ名] [コマンド] [引数...]| オプション | 説明 |
|---|---|
-d |
コンテナをバックグラウンドで実行します。 |
-p |
ホストに対してコンテナのポート番号を公開します。-p ホスト側ポート番号:コンテナ側ポート番号の書式で記載します。 |
--rm |
コンテナ終了時にコンテナを破棄します。 |
-v | マウントするボリュームを定義します。ホストとコンテナ間でディレクトリ・ファイルを共有するときに利用します。 |
--name |
コンテナに名前を割り当てます。 |
docker container createコマンドを利用すればコンテナを停止状態で作成することができますが、コンテナの作成と起動を同時に実施する
docker container runコマンドの方が利用頻度は高いです。例えば Nginx サーバを、待ち受けポートを 9000 に指定して起動する場合は、以下のとおり実行します。
(本手順実行前にあらかじめ対象のDockerイメージ(今回はNginxイメージ)は取得済である必要があります)
docker container run -d -p 9000:80 nginx実行結果例はこちら
5acf29229c53d0b747ec23cdb676440cbc9062d77271e80344c69863b3000404Nginxサーバが起動していれば、ブラウザで「http://localhost:9000/」にアクセスすると以下のようなページが表示されます。
上記手順で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が表示されます。
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:/#-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コマンドをカテゴリ別に一覧に記載しています。
- 新旧両方のコマンドを記載しています。
| 新コマンド | 旧コマンド | コマンド概要 |
|---|---|---|
docker login |
- | Dockerレジストリにログインします。 |
docker logout |
- | Dockerレジストリからログアウトします。 |
docker search |
- | Docker Hubでイメージ検索します。 |
| 新コマンド | 旧コマンド | コマンド概要 |
|---|---|---|
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イメージにタグを付与します。 |
| 新コマンド | 旧コマンド | コマンド概要 |
|---|---|---|
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 コンテナが停止するまでブロックし、その後終了コードを表示します。 |
| 新コマンド | 旧コマンド | コマンド概要 |
|---|---|---|
docker system df |
- | dockerのディスク使用率を表示します。 |
docker system events |
docker events |
サーバからリアルタイムなイベントを取得します。 |
docker system info |
docker info |
dockerが稼働しているホストのシステム情報を表示します。 |
docker system prune |
docker prune |
利用していないデータを削除します。 |
| 新コマンド | 旧コマンド | コマンド概要 |
|---|---|---|
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ネットワークを削除します。 |
| 新コマンド | 旧コマンド | コマンド概要 |
|---|---|---|
docker volume create |
- | ボリュームを作成します。 |
docker volume inspect |
- | ボリュームの詳細情報を表示します。 |
docker volume ls |
- | ボリュームを一覧表示します。 |
docker volume prune |
- | 未使用のボリュームを一括削除します。 |
docker volume rm |
- |