コンテナを操作するコマンドをいくつか使い、コンテナを起動したり停止したりできるようになりましょう。
コマンド一覧を暗記しても理解度向上の実感には繋がりづらいと 【 2部: Docker を理解するためのポイント 】 で言いましたが、それでも最低限の基本操作は覚えておく必要があります。
2部のここから先では、特定の用途によって使い分けたりしない Docker 操作の基礎を学びます。
このページで初登場するコマンドとオプション
コンテナを起動する - container run
$ docker container run [option] <image> [command]
$ docker run [option] <image> [command]
コンテナ一覧を確認する - container ls
$ docker container ls [option]
$ docker ps [option]
オプション | 意味 | 用途 |
---|---|---|
-a --all
|
全てのコンテナを表示する | 起動中以外のコンテナを確認する |
コンテナを停止する - container stop
$ docker container stop [option] <container>
$ docker container stop [option] <container>
コンテナを削除する - container run
$ docker container rm [option] <container>
$ docker rm [option] <container>
オプション | 意味 | 用途 |
---|---|---|
-f --force
|
実行中のコンテナを強制削除する | 停止と削除をまとめて行う |
コンテナを起動する
Nginx という Web サーバを、container run
コマンドを使ってコンテナとして起動してみます。
$ docker container run [option] <image> [command]
まずはじめに最低限のオプションでコンテナを起動します。
ただ起動だけをしたいので <image>
に nginx
を指定するのみにしたいところですが、動作確認が全くできないのは面白みにかけるので --publish
オプションのみ付けることにします。
--publish
オプションによりブラウザから動作確認ができるようになりますが、これの説明は【 3部: ポート 】で行います。
以上を踏まえ、次のコマンドでコンテナを起動します。
$ docker container run \
--publish 8080:80 \
nginx:1.21
2022/02/13 23:12:57 [notice] 1#1: start worker processes
start worker processes
の出力とともにターミナルが操作できなくなれば、起動成功です。
ブラウザで http://localhost:8080 にアクセスしてみましょう。
次のような画面になれば、起動したコンテナの Web サーバにアクセスできています。
コンテナそのものは仮想サーバではありませんが、起動したコンテナ ( 隔離領域 ) の中で Nginx という Web サーバ ( nginx
) が起動しています。
イメージ から コンテナ を起動したので、今の状況は次のような図で示せます。
起動中のコンテナ一覧を確認する
コンテナ一覧の確認をするには container ls
コマンドを使います。
$ docker container ls [option]
container run
を実行したターミナルのタブをそのままにして、別のタブを新たに開きコンテナ一覧を確認してみます。
オプションは特に指定しなくてよいので、次のコマンドでコンテナ一覧を確認します。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fbae1e2219d nginx:1.21 "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:8080->80/tcp amazing_brahmagupta
IMAGE
が nginx:1.21
と表示されているコンテナが1つ起動していることが確認できます。
CONTAINER ID
は 7fbae1e2219d
で NAMES
は amazing_brahmagupta
となっていますが、これは起動するたびにランダムで割り振られます。
コンテナ一覧 を確認したら CONTAINER ID
が 7fbae1e2219d
だったので、今の状況は次のような図で示せます。
起動中のコンテナを停止する
nginx
を使い終わりコンテナを停止したくなったら、container stop
コマンドでコンテナを停止します。
$ docker container stop [option] <container>
container stop
にはオプションはほとんどないため、対象の <container>
を CONTAINER ID
か NAMES
で指定するだけで実行できます。
以上を踏まえ、次のコマンドでコンテナを停止します。
( CONTAINER ID
は自分のターミナルで確認した値 )
$ docker container stop \
7fbae1e2219d
正常にコンテナが停止できると、もう http://localhost:8080 にアクセスしてもなにも表示されません。
起動中のコンテナ一覧の確認をしても、Nginx コンテナは確認できなくなっています。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
起動中のコンテナ に 停止を命令をした ので、今の状況は次のような図で示せます。
全てのコンテナ一覧を確認する
コンテナは、停止しても削除するまでは情報としてはホストマシンに残り続け、再起動することもできます。
起動していないコンテナも含めてコンテナ一覧を確認するには、container ls
に --all
オプションをつけて実行します。
$ docker container ls \
--all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fbae1e2219d nginx:1.21 "/docker-entrypoint.…" 18 seconds ago Exited (0) 6 seconds ago amazing_brahmagupta
--all
オプションをつけない場合の確認範囲はこのように、
--all
オプションをつけた場合の確認範囲はこのように図で示ます。
停止済コンテナを削除する
停止済コンテナを削除するには container rm
を行います。
$ docker container rm [option] <container>
container stop
と同様に container rm
も <container>
を指定するコマンドなので、container ls
で確認できる CONTAINER ID
を使って実行します。
( CONTAINER ID
は自分のターミナルで確認した値 )
$ docker container rm \
7fbae1e2219d
これでコンテナは完全に削除されました。
$ docker container ls \
--all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
停止済のコンテナ に 削除を命令をした ので、今の状況は次のような図で示せます。
起動中のコンテナを停止せずいきなり削除する
container stop
と container rm
を次のコマンドでまとめて行うことができます。
$ docker container rm \
--force \
<container>
続けてすぐ削除するつもりのコンテナを停止するときは、このコマンドで楽ができるでしょう。
起動中のコンテナ に 強制削除を命令をした 場合は、状況を次のような図で示せます。
停止するか削除するか
停止済のコンテナは再起動ができますが、僕はほとんど再起動をすることはありません。
なので僕は container stop
は使わずに container rm --force
か、【 2部: コンテナ起動時の基本の指定 】で解説する container run
の --rm
オプションを使って、コンテナはすぐ削除しています。
コンテナは軽量で使い捨てがコンセプトなので「気軽に起動して用が済んだら削除する」「また使いたくなったら起動する」というスタンスがシンプルでよいと僕は思います。
まとめ
簡潔にまとめます。
- コンテナを起動するには
container run
- コンテナ一覧を確認するなら
container ls
- 起動中のコンテナを停止するなら
container stop
- 停止済のコンテナを削除するなら
container rm
- 起動中のコンテナを削除するなら
container rm --force
混乱してしまったときは立ち返ってみてください。