第4回では、コンテナの作成、起動、停止、削除の一連の流れを学びます。
「docker container run」コマンドによるコンテナの起動と、「docker ps」コマンドによるコンテナの状態確認は頻繁に使うので、使い方やオプションを覚えましょう。
・コンテナの操作方法
作成・起動・停止・削除
・コンテナ操作のコマンドの使い方
今回行うこと
今回は例として、nginxのコンテナの起動から削除まで一連の手順を実行します。
Step1 コンテナの作成
実際にコンテナの作成と起動を行いましょう。コンテナの作成と起動は「docker container run」コマンドです。
以下のコマンドを入力して実行してみましょう。オプションの意味は後ほど説明します。
※「docker run」コマンドでも可。
% docker container run -d –name nginx-test –publish 8080:80 nginx
実行すると、イメージのダウンロードが始まります。
※nginxのイメージを持っていない場合、Docker Hubからnginxイメージをダウンロードが始まる。
しばらくするとダウンロードは完了して、nginxコンテナの起動が完了します。
docker container run コマンドの実態
docker container runを実行すると、何故イメージのダウンロードが始まるのでしょうか?
実は、docker container runコマンドは、内部では次の3つのコマンドが実行されています。
① docker image pull [イメージの取得]
② docker container create [コンテナの作成]
③ docker container start [コンテナの起動]
そのため、起動するイメージが無い場合は「docker image pull」コマンドによってDocker Hubからイメージをダウンロードする動きとなっています。
docker container run コマンドのオプション
docker conatiner runコマンドのオプションの詳細は以下の記事を参照してください。
今回はよく使用するオプションを説明します。
オプション | 内容 |
–name | コンテナ名を指定する。 –name コンテナ名 |
-p (–publish) | ポート番号を指定する。 –p ホストのポート番号:コンテナのポート番号 |
-d (–detache) | バッググラウンドプロセスでコンテナを起動する |
–rm | コンテナ停止時、コンテナを自動で削除する |
-i (–interactive) | キーボード操作を行う。 通常は「-it」と続けて指定することが多い |
-t (–tty) |
先ほど実行したコマンドのオプションの意味は次のとおりです。
% docker container run -d –name nginx-test –publish 8080:80 nginx
・”-d”:nginxコンテナをバッググランドで実行
・”–name”:コンテナ名を「nginx-test」に設定
・”–publish”:nginxの公開ポート番号を”8080″へ設定
コンテナ名を元に、コンテナの状態確認を行うので、わかりやすいコンテナ名を設定しましょう。
ホストマシンとコンテナの通信
nginxコンテナを起動する際に”–publish”オプションを設定しています。
–publish 8080:80
ホストマシンからnginxコンテナに対して、ブラウザでアクセスするためには「ポート」の設定が必要です。nginxはポート80番でWebサイトのアクセスを待ち構えています。
しかし、コンテナの中のnginxは、直接外とつながっていないため通信はできません。
そこで、ホストマシンにWebサイト閲覧者からの要求を受けてもらい、コンテナへ伝えてもらうことにします。具体的には、ホストマシンのポート8080とコンテナのポート80を繋ぎます。この設定が-p(–publish)オプションです。
ちなみに、nginxコンテナを複数を起動する(複数のWebサーバを立てる) 場合は、ホストマシンのポート番号をずらして設定します。
Step2 コンテナの起動確認
Step1でnginxのコンテナを起動しました。起動していることを「docker ps」コマンドで確認しましょう。
% docker ps
CONTAINER ID IMAGE STATUS PORTS NAMES
372fa99f0c3b nginx Up 9 hours 0.0.0.0:8080->80/tcp nginx-test
「docker ps」コマンドを実行すると、次のような結果が表示されます。
コンテナの状態は頻繁に確認するので、各フィールドの意味は覚えましょう。
「STATUS」が”Up”になっていれば、nginxコンテナは起動できています。
Step3 ブラウザでアクセス
Step2でnginxコンテナの起動が確認できたので、nginxのWebサーバへアクセスしましょう。ChromeやEdgeなどのブラウザのURL欄に以下を入力してアクセスしてください。
localhost:8080
次のような画面が表示されることを確認してください。
Step4 コンテナの停止と削除
nginxのWebサーバへアクセスできたら、今回の目的は達成できたので、不要になったnginxコンテナを削除ます。
コンテナを削除するためには、コンテナを停止する必要があります。
% docker container stop nginx-test
※”nginx-test”はコンテナ名です。
次に、docker psコマンドで停止の状態を確認します。
“-a”オプションを付けることを忘れずに。
% docker ps -a
CONTAINER ID IMAGE STATUS PORTS NAMES
372fa99f0c3b nginx Exited (0) About a minute ago nginx-test
実行すると、STATUSが”Exited”になっていることを確認してください。
停止を確認後、docker container rmコマンドで、コンテナの削除を行います。
% docker container rm nginx-test
Step5 コンテナの削除確認
最後に、nginxのコンテナが削除されていることを確認します。
次のように”nginx”のコンテナが表示されていなければ削除できています。
% docker ps -a
CONTAINER ID IMAGE STATUS PORTS NAMES
コンテナ名を設定すること。–name オプション
②コンテナの状態確認は「docker ps」コマンド
STATUSが”Up”なら起動中、”Extited”なら停止中
③コンテナ削除は、停止→削除の順に行うこと
docker container stop → docker container rm