Lesson 7
Docker CLI
Lesson 7
Chapter 1
Docker CLI概要
Lesson7では、今までの整理としてDocker CLI(dockerコマンド)のまとめを行います。
これまで使用したものの復習を含め、まだ使用していないコマンドも紹介します。
新旧コマンドについて
dockerコマンドを整理するにあたって、最初に触れておきたいことがあります。
それはdockerコマンドには、コマンド名が異なるが同じ実行内容のものがあることです。
例えば、docker container rm
はコンテナを削除するコマンドですが、旧コマンドのdocker rm
でも同じ内容が実行できます。
他にもdocker image rm
は、旧コマンドではdocker rmi
が対応しています。
新旧コマンドの例
このようになっている理由は、dockerがバージョンアップされ多機能になっていく中で、コマンド数が増加したため、コマンドを再構築した歴史があるためです。
コマンドの再構築により、行いたい操作と対象のオブジェクト(container、 image等)の関係が明確になり、使いやすくなっています。
ただし、旧コマンドに対するサポートは続いており、新旧どちらのコマンドでも実行可能になっています。
このLessonでは新旧コマンドの対応を掲載しますので、参考にして下さい。
docker help
行いたい操作に対するdockerコマンドを忘れてしまった場合は、docker help
コマンドで使用できるコマンドの一覧を得ることができます。

その他にも、さらにコマンドの一覧を得たい対象を絞って表示することもでき、以下のようなものがあります。
コマンド | 対象 |
---|---|
docker container help | コンテナ |
docker image help | イメージ |
docker network help | ネットワーク |
docker volume help | ボリューム |
docker compose help | Docker Compose |
このように、docker help
コマンドで使用できるコマンドの一覧を得られることを覚えておきましょう。

Lesson 7
Chapter 2
コンテナ
このchapterでは、コンテナ関係のコマンドを整理します。
コンテナを実行することがDockerの目的であるので、コンテナ関係のコマンドが数も一番多くなっています。
docker container help
docker container help
を実行して、使用できるコマンドの一覧を表示してみましょう。

これが使用できるコマンド全てになりますが、中々使用する機会がないものもあります。ここでは、この中でも使用頻度の高いものをいくつかピックアップして紹介していきます。
コンテナのライフサイクル
各コマンドの詳細に移る前に、コンテナのライフサイクルについて解説します。
コンテナのライフサイクルは、dockerコマンドでコンテナを操作する上で重要な概念になります。
Lesson3のchapter3では、docker run
コマンドの実行内容を以下の図で紹介しました。
コンテナの作成から起動まで
これは、コンテナの作成から起動までの流れを抜き取った図になります。
しかし、コンテナのステータスは他にもあり、全てを挙げると以下の図のようになります。
コンテナのライフサイクル
コンテナのライフサイクルとは、このようにコンテナのステータスが変遷する流れのことで、以下のような各段階に沿って移行します。
・作成
コンテナが作成されたが、まだ開始されていない状態(created)です。
・開始/起動
作成されたコンテナ(created)を開始した状態(running)です。
・再起動
起動中(running)のコンテナに対し、docker container restart
コマンドを実行すると、再起動状態(restarting)になります。処理が完了すると、起動状態(running)に戻ります。
・一時停止
起動中(running)のコンテナ内部の全プロセスが一時停止した状態(paused)です。docker container pause
コマンドで一時停止し、docker container unpause
コマンドで再起動できます。
・終了
起動中(running)のコンテナが停止した状態(exited)です。何らかの原因が発生し、コンテナの停止に失敗すると、ステータスがdeadになります。終了したコンテナに対し、docker container start
コマンドを実行すると、再び起動することができます。
・削除
docker container rm
コマンドを実行すると削除している状態(removing)に移行します。処理が完了すると、コンテナが削除されます。
以上がコンテナのライフサイクルの概要になりますが、以下の実際のコマンドの実行でも、ステータスがどのように変遷するか合わせて解説します。
docker container run / docker run(コンテナを作成&起動)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container run | docker run | docker container run [イメージ名] |
指定したイメージを元にコンテナを作成し、起動します。
指定したイメージ名をまず、ローカル内から探します。ローカル内に該当イメージがなければ、Docker Hubからイメージを取得します。
コマンドを指定した場合、デフォルトのコマンドを書き換えて実行します。
docker container run
オプション
コンテナの起動にあたり、どのように実行するかを指定するためのオプションが豊富にあります。下記のリストで、その中でもよく使うものをピックアップしました。
オプション | 省略形 | 内容 |
---|---|---|
--name | コンテナに名前をつける | |
--rm | コンテナが停止したときに自動で削除する | |
--interactive | -i | コンテナの標準入力に接続する |
--tty | -t | 擬似ターミナルを割り当てる |
--detach | -d | バックグラウンドで実行する |
--publish | -p | ポートを設定する |
--env | -e | 環境変数を設定する |
コンテナを対話操作する
数多くあるオプションの中でも、Lesson4のchapter1でも使用した-it
オプションについて解説します。
-it
は--interactive
と--tty
オプションの省略形をつなげて実行しています。よって、-i -t
と記述しても同じ意味になりますが、一番短く記述できるものを選んでいます。
-i
は、ホストマシン側のターミナル(PowerShell)で入力したコマンドをコンテナ内の入力として使用できるようにするオプションです。
-t
は、コンテナ内で擬似ターミナルを立ち上げて接続するためのオプションです。
両方を指定することによって、起動したコンテナとホストマシンで対話操作を行うことができるようになります。
以下の簡単な例で、-it
オプション有りと無しの場合を比較してみて下さい。
-it
オプション無しで実行
-it
オプション無しで、docker run ubuntu /bin/bash
を実行します。

対話操作を行うことができず、コンテナの実行が終了します。
-itオプション無し
-it
オプション有りで実行
今度は-it
オプション有りで実行してみましょう。

コンテナ内でターミナルが立ち上がり、対話操作を行うことができるようになりました。
-itオプション有り
docker container create / docker create(コンテナを作成)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container create | docker create | docker container create [イメージ名] |
指定したイメージを元に、コンテナを作成します。
オプション
オプションについてはdocker run
コマンドとほとんど同じものが使えます。
①docker create
によるコンテナの作成段階で指定したオプションにしたがって、次の②docker start
でコンテナを起動するというイメージです。
docker runとdocker createはオプションを共有している
docker container start / docker start(コンテナを起動)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container start | docker start | docker container start [コンテナ名] |
作成されたコンテナ、あるいは停止中のコンテナを起動します。
docker start
オプション
オプション | 省略形 | 内容 |
---|---|---|
--attach | -a | 標準入出力に接続してコンテナを起動する |
--interactive | -i | コンテナの標準入力に接続する |
docker start
でコンテナを起動させる時、コンテナを対話操作するためには-ai
オプションをつけて実行する必要があります。
下記のようにdocker create
で-it
オプションをつけても、docker start
だけではコンテナを対話操作することができません。

-ai
オプションをつけて実行すると、コンテナを対話操作できるようになります。

docker start -ai
docker container exec / docker exec(コンテナ内でコマンドを実行)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container exec | docker exec | docker container exec [コンテナ名] [コマンド] |
実行中のコンテナ内で、指定したコマンドを実行します。
コマンドはデフォルトディレクトリで実行されますが、DockerfileのWORKDIR命令で作業ディレクトリを指定している場合は、そちらで実行されます。
実行例
まずは実行中のコンテナを用意します。
docker run -d -it --name my-ubuntu ubuntu
を実行して下さい。

docker container ls -a
で、コンテナが実行中であることを確かめます。

my-ubuntu
という名前のコンテナが実行中であることが確認できました。
my-ubuntuが実行中
それでは実行中のコンテナに対し、コマンドを実行してみましょう。
docker exec my-ubuntu ls
を実行して下さい。

実行中のmy-ubuntu
内で、ls
コマンドを実行することができました。
オプション
オプション | 省略形 | 内容 |
---|---|---|
--interactive | -i | コンテナの標準入力に接続する |
--tty | -t | 擬似ターミナルを割り当てる |
--detach | -d | バックグラウンドで実行する |
--env | -e | 環境変数を設定する |
--workdir | -w | コマンドを実行するディレクトリを指定する |
実行中のコンテナに接続
次に実行中のコンテナに接続して対話操作できるようにしてみましょう。
①docker run -d -it --name my-ubuntu ubuntu
でコンテナを実行している状態で、②docker exec -it my-ubuntu /bin/bash
を実行します。

my-ubuntu
内に接続することができました。
実行中のコンテナに接続する
docker container restart / docker restart(コンテナを再起動)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container restart | docker restart | docker container restart [コンテナ名] |
指定したコンテナを再起動させます。
オプション
オプション | 省略形 | 内容 |
---|---|---|
--time | -t | コンテナを強制停止するまで待機する秒数 |
-t
オプションで指定した秒数を経過しても再起動できない場合は、コンテナが強制停止されます。デフォルトでは10秒に設定されています。
docker container stop / docker stop(コンテナを停止)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container stop | docker stop | docker container stop [コンテナ名] |
指定したコンテナを停止させます。
停止に失敗すると、ステータスがdeadになります。
docker container stop
オプション
オプション | 省略形 | 内容 |
---|---|---|
--time | -t | コンテナを強制停止するまで待機する秒数 |
-t
オプションで指定した秒数を経過しても停止できない場合は、コンテナが強制停止されます。デフォルトでは10秒に設定されています。
docker container rm / docker rm(コンテナを削除)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container rm | docker rm | docker container rm [コンテナ名] |
指定したコンテナを削除します。
オプション
オプション | 省略形 | 内容 |
---|---|---|
--force | -f | 実行中のコンテナを強制的に削除する |
--volumes | -v | コンテナに割り当てられた匿名ボリュームを削除する |
停止したコンテナの全削除
docker rm
の実行では基本的に1つずつコンテナを選択して削除することになります。
停止したコンテナを全て削除したい場合はdocker container prune
というコマンドが使用できます。
docker XXX prune
docker container prune
は停止したコンテナを全て削除するコマンドでしたが、イメージ・ネットワーク・ボリュームについても、それぞれ同じ形式のコマンドが用意されています。また、コンテナ・イメージ・ネットワークをまとめて削除するにはdocker system prune
というコマンドを使用します。
コマンド | 内容 |
---|---|
docker image prune | 未使用イメージの全削除 |
docker network prune | 未使用ネットワークの全削除 |
docker volume prune | 未使用ボリュームの全削除 |
docker system prune | 未使用コンテナ・イメージ・ネットワークの全削除 |
docker container ls / docker ps(コンテナの一覧を取得)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker container ls | docker ps | docker container ls |
コンテナの一覧を表示します。
オプション無しの実行では、コンテナのステータスが実行中のものだけを表示します。
オプション
オプション | 省略形 | 内容 |
---|---|---|
--all | -a | 全てのコンテナを表示する |
--filter | -f | フィルタリングして表示します |
フィルタリングして表示する
-f
オプションをつけると、検索条件をつけて表示することができます。
-f "key=value"
の形式で指定します。keyはフィルタ名のことです。
例えば、以下のようなものがあります。
フィルタ名 | 検索内容 |
---|---|
id | コンテナのID |
name | コンテナの名前 |
status | コンテナのステータス |
volume | 実行中のコンテナがマウントしているボリューム |
network | 実行中のコンテナが接続しているネットワーク名 |
実行中のコンテナの一覧を取得したい場合には、docker container ls -f "status=running"
というように実行します。
docker container cp / docker cp
新コマンド | 旧コマンド |
---|---|
docker container cp | docker cp |
ホストマシンからコンテナ、あるいはコンテナからホストマシンにファイル(ディレクトリ)をコピーします。
以下で簡単な実行例を紹介するに当たり、実行中のコンテナが必要になるので、docker container exec
のところで使用したコンテナを再利用しましょう。
コンテナが起動していない場合は、docker start my-ubuntu
で起動してください。
ホストマシンからコンテナにファイルをコピーする
実行内容 | 形式 |
---|---|
ホストマシンからコンテナにコピー | docker container cp [コピー元パス] [コンテナ名]:[コピー先パス] |
それでは、ホストマシン上のファイルを実行中のmy-ubuntuコンテナにコピーしてみましょう。
適当なファイルを用意して下さい。ここではmyfile.txt
とします。
docker container cp myfile.txt my-ubuntu:/home
を実行して下さい。

このコマンドの実行により、myfile.txt
をmy-ubuntuコンテナ内のhomeディレクトリにコピーしています。
ホストマシンからコンテナにコピー
docker exec my-ubuntu ls /home
を実行して下さい。

ファイルがコンテナ内にコピーされていることが確認できました。
コンテナからホストマシンにファイルをコピーする
実行内容 | 形式 |
---|---|
コンテナからホストマシンにコピー | docker container cp [コンテナ名]:[コピー元パス] [コピー先パス] |
次にコンテナからホストマシンにファイルをコピーしてみましょう。
コンテナ内に適当なファイルを用意します。
docker exec my-ubuntu touch /home/myfile2.txt
を実行して下さい。

それでは、この作成したファイルをホストマシンにコピーしましょう。
docker container cp my-ubuntu:/home/myfile2.txt .
を実行して下さい。

先ほどと、コンテナとホストマシンのパスの順番が反対になっていることに注意して下さい。
コンテナからホストマシンにコピー
コピー先を.
でカレントディレクトリにしています。
ls
コマンドでファイルが存在しているか確認してみましょう。

無事、コンテナからホストマシンにファイルをコピーできています。
まとめ
以上で、コンテナに関するコマンドの整理を終了します。
全てのコマンドやオプションを解説しているわけではないので、helpコマンドや公式ページなどを参考に各自必要であれば調べてみて下さい。

Lesson 7
Chapter 3
イメージ・ボリューム・ネットワーク
このchapterではイメージ・ネットワーク・ボリュームに関するコマンドで、今までのLessonで使用したものの復習を行います。
イメージ
docker image help
を実行して、使用できるコマンドの一覧を表示してみましょう。

ここでは、以下のものについてピックアップします。
新コマンド | 旧コマンド | 実行内容 |
---|---|---|
docker image build | docker build | イメージを作成 |
docker image ls | docker images | イメージの一覧表示 |
docker image pull | docker pull | イメージの取得 |
docker image rm | docker rmi | イメージを削除 |
docker image build / docker build(イメージを作成)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker image build | docker build | docker image build パス |
パスで指定した先のDockerfileを用いてイメージを作成します。
カレントディレクトリのDockerfileを指定するときにパスの.
を忘れないようにしましょう。

オプション
オプション | 省略形 | 内容 |
---|---|---|
--file | -f | ファイルを指定する |
--tag | -t | 名前を指定する |
ファイルを指定する
デフォルトではdocker build
で指定するファイル名はDockerfileになりますが、-f
オプションを使用すると任意の名前のファイルを読み込ませることができます。
例えば、/dockerfiles
ディレクトリ内にあるDockerfile.dev
という名前のファイルを元にイメージを作成するとしましょう。
その場合は、docker image build -f Dockerfile.dev /dockerfiles
というように実行します。
任意の名前のファイルを指定してイメージを作成
docker image ls / docker images(イメージの一覧表示)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker image ls | docker images | docker image ls |
イメージの一覧を表示します。
REPOSITORY(リポジトリ名)、TAG(タグ名)、IMAGE ID(イメージID)、CREATED(作成日)、SIZE(イメージサイズ)を確認できます。

docker image pull / docker pull(イメージの取得)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker image pull | docker pull | docker image pull [イメージ名:タグ] |
レジストリからイメージを取得します。
docker image pull [イメージ名]
の実行でタグを指定しなければ、デフォルトでlatest
タグを使用します。

Docker Hub公式ページ
公式に用意されているイメージにはたくさんの種類のものがありますが、それを元に開発をする際に手助けになる情報がDocker Hubの公式のイメージページに書かれていることがあります。例えば、Lesson4と5ではMySQLイメージの環境変数を設定しましたが、その情報も公式ページに詳しく記載があります。開発中に分からないことがあれば確認してみるとよいかもしれません。
docker image rm / docker rmi(イメージを削除)
新コマンド | 旧コマンド | 形式 |
---|---|---|
docker image rm | docker rmi | docker image rm [イメージ名] |
指定した名前のイメージを削除します。
未使用イメージの全削除を行うにはdocker image prune
を実行します。
ネットワーク
次にネットワークに関係するコマンドを見ていきます。
Lesson5のchapter3でネットワークの設定に関する学習を行いましたが、そのときに確認したように、複数のコンテナを立ち上げる際にネットワークの設定を手動で行なっていくより、Docker Composeに自動で設定を任せた方が便利でした。
よって、初心者の内は使用頻度があまり高くないと思いますが、どのようなコマンドがあるかざっと知っておくようにしましょう。
docker network help
を実行して、使用できるコマンドの一覧を表示してみましょう。

ここでは、以下のものについてピックアップします。
コマンド | 実行内容 |
---|---|
docker network create | ネットワークを作成 |
docker network ls | ネットワークの一覧表示 |
docker network inspect | ネットワークの詳細表示 |
docker network rm | ネットワークを削除 |
docker network create(ネットワークを作成)
コマンド | 形式 |
---|---|
docker network create | docker network create [ネットワーク名] |
指定した名前でネットワークを作成します。
オプション
Lesson5のchapter3では--driver
や--subnet
などのオプションを使用しました。
その他にもネットワークの詳細を設定していくためのオプションが豊富にありますが、ここでは詳しくは触れないので必要になった場合、Dockerの公式ページなどで確認してみて下さい。
docker network ls
コマンド | 形式 |
---|---|
docker network ls | docker network ls |
ネットワークの一覧を表示します。
docker network inspect
コマンド | 形式 |
---|---|
docker network inspect | docker network inspect [ネットワーク名] |
指定した名前のネットワークの詳細を表示します。
docker network rm
コマンド | 形式 |
---|---|
docker network rm | docker network rm [ネットワーク名] |
指定した名前のネットワークを削除します。
未使用ネットワークの全削除を行うにはdocker network prune
を実行します。
ボリューム
次に、ボリュームに関係するコマンドを見ていきます。
以下でそれぞれのコマンドの整理を行なっていますが、イメージやネットワークに対するコマンドとほとんど形式が同じになっています。
そのためdockerコマンドに慣れてきた方であれば、自然に使いこなせるでしょう。
それでは、docker volume help
を実行して、使用できるコマンドの一覧を表示してみましょう。

コマンド | 実行内容 |
---|---|
docker volume create | ボリュームを作成 |
docker volume inspect | ボリュームの一覧表示 |
docker volume ls | ボリュームの一覧表示 |
docker volume rm | ボリュームを削除 |
docker volume create
コマンド | 形式 |
---|---|
docker volume create | docker volume create [ボリューム名] |
指定した名前でボリュームを作成します。
docker volume inspect
コマンド | 形式 |
---|---|
docker volume inspect | docker volume inspect [ボリューム名] |
指定した名前のボリュームの詳細を表示します。
docker volume ls
コマンド | 形式 |
---|---|
docker volume ls | docker volume ls |
ボリュームの一覧を表示します。
docker volume rm
コマンド | 形式 |
---|---|
docker volume rm | docker volume rm [ボリューム名] |
指定した名前のボリュームを削除します。
未使用ボリュームの全削除を行うにはdocker volume prune
を実行します。
まとめ
以上で、イメージ・ネットワーク・ボリュームに関するコマンドの整理を終了します。
コンテナ関係のコマンドと同様に、全てのコマンドやオプションを解説しているわけではないので、helpコマンドや公式ページなどを参考に各自必要であれば調べてみて下さい。

Lesson 7
Chapter 4
docker compose
このchapterではdocker composeコマンドの整理を行います。
docker compose help
でコマンドの一覧を確認してみましょう。

ここでも全てのコマンドの解説は行いませんが、基本的にはdocker container
コマンドの操作と同じように考えると分かりやすいと思います。
例えば、docker compose up
で実行したコンテナを停止させたければ、docker compose stop
というように、docker container
コマンドの理解があれば直感的に使用することができると思います。
以下では使用頻度の高いものに限って整理します。
コマンド | 実行内容 |
---|---|
docker compose build | サービスをビルドする |
docker compose up | コンテナを作成し、起動する |
docker compose down | コンテナを停止し、削除する |
docker compose stop | コンテナを停止する |
docker compose exec | コンテナ内でコマンドを実行する |
-f
オプション
docker compose
コマンドはデフォルトではカレントディレクトリ内のcompose.yml(docker-compose.yml)を読み込んで実行します。
しかし、-f
オプションを使用することでファイルを指定することができます。
docker compose -f [compose.ymlのパス] [コマンド]
という形式で使用します。
docker compose build
コマンド | 形式 |
---|---|
docker compose build | docker compose build |
compose.ymlに記述された設定に従って、サービスをビルドします。
元になるDockerfileやcompose.ymlでの設定を変更した場合は、このコマンドによるイメージの再構築が必要になります。
docker compose build [サービス名]
という形式で、特定のサービスのみビルドを実行することもできます。設定の書き換えが一部のみの場合は積極的に利用すると良いでしょう。
docker compose up
コマンド | 形式 |
---|---|
docker compose up | docker compose up |
compose.ymlに記述された設定に従って、コンテナを作成し、起動します。
ネットワークやボリュームの設定なども同時に行われます。
docker compose up
オプション
オプション | 省略形 | 内容 |
---|---|---|
--detach | -d | バックグラウンドでコンテナを実行します |
--build | コンテナ実行前にイメージを構築します |
--build
オプションをつけて実行することでdocker compose build
と同様に設定ファイルの変更の反映を行うことができます。
docker compose down
コマンド | 形式 |
---|---|
docker compose down | docker compose down |
docker compose up
で実行されたコンテナを停止し、削除します。
また、compose.yml内で記述されたネットワークがあれば削除します。
オプション
オプション | 省略形 | 内容 |
---|---|---|
--volumes | -v | ボリュームの削除 |
-v
オプションをつけて実行することで、コンテナ停止後にcompose.yml内のvolumes
項目に記述されたボリュームを削除します。
docker compose stop
コマンド | 形式 |
---|---|
docker compose stop | docker compose stop |
実行中のコンテナを停止します。
docker compose down
で停止したときと比べると、コンテナが停止状態で残っているので、docker compose start
で再起動することができます。
docker compose exec
コマンド | 形式 |
---|---|
docker compose exec | docker compose exec [サービス名] [コマンド] |
実行中のコンテナ内で指定したコマンドを実行します。
docker container exec
コマンドと比べると、デフォルトで擬似端末が割り当てられているため-it
オプションなしで対話操作が可能になっています。
まとめ
以上で、docker compose
コマンドの整理を終了します。
docker compose
コマンドに関してはここであげた5つのコマンドの使用頻度が特に高いと思いますが、他にもコマンドやオプションがあるのでhelpコマンドや公式ページを参照してみて下さい。
