Docker コンテナを再起動する
- Docker Hub から Nginx イメージをプルする
- イメージからコンテナーを実行する
- 実行中のコンテナを再起動する
- 停止したコンテナを再起動する
- Docker コンテナがすぐに終了する
- まとめ
以前バックグラウンドで実行されていたコンテナが停止した場合、docker はコンテナを再起動するために使用できるいくつかのコマンドを提供します。
このチュートリアルでは、バックグラウンドで実行されている Nginx サーバーで docker コンテナーを再起動する方法を学習します。 また、一部のコマンドがコンテナーの即時終了につながる方法についても学習します。
Docker Hub から Nginx イメージをプルする
まず、Docker Hub から Nginx イメージをプルして、そこからイメージを実行する必要があります。 ただし、Dockerfile
を使用してカスタム イメージを作成できます。
コンピューターでターミナル ウィンドウを開き、以下のコマンドを使用してイメージをプルします。
~$ docker pull nginx:alpine
イメージからコンテナーを実行する
このセクションでは、バックグラウンドで Nginx サーバーを使用してコンテナーを実行します。 次のコマンドを使用して、web-app
という名前のコンテナーを実行します。
~$ docker run --name web-app -d -p 8000:80 nginx:alpine
このコマンドでは、--name
フラグを使用してコンテナーの名前を作成しました。 さらに、コンテナをバックグラウンドで実行できるフラグ -d
も使用しました。
最後に、コンテナーのポートをホストに公開するための -p
フラグを追加しました。 次のコマンドを使用して、コンテナーが稼働中であることを確認できます。
~$ docker ps
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:8000->80/tcp web-app
実行中のコンテナを再起動する
コンテナを再起動するために使用できるアプローチは 2つあります。 最初のアプローチは docker start
コマンドを使用し、2 番目のアプローチは docker restart
コマンドを使用します。
docker start
コマンドは停止したコンテナを起動するために使用され、docker restart
コマンドは実行中のコンテナを再起動するために使用されます。
コンテナーは既に実行されているため、次のコマンドを使用して web-app
コンテナーを再起動します。
~$ docker restart web-app
以下のコマンドを使用して、コンテナーの再起動後にコンテナーが稼働中であることを確認します。
~$ docker ps
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 20 minutes ago Up 1 second 0.0.0.0:8000->80/tcp web-app
停止したコンテナを再起動する
このアプローチは、前のアプローチと同じです。 実行中のコンテナを停止するには、docker stop
コマンドを使用する必要があります。
コンテナが停止したら、docker start
コマンドを使用して、停止したコンテナを再起動します。 次のコマンドを実行して、これが実際にどのように機能するかを確認します。
~$ docker stop web-app
出力:
web-app
docker ps -a
コマンドを実行して実行中および停止中のすべてのコンテナーを一覧表示すると、web-app
コンテナーのステータスが終了していることがわかります。これは、コンテナーが停止したことを意味します。
~$ docker ps -a
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 32 minutes ago Exited (0) About a minute ago web-app
最後に、次のコマンドを使用してコンテナーを再起動します。
~$ docker start web-app && docker ps
出力:
web-app
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 37 minutes ago Up Less than a second 0.0.0.0:8000->80/tcp web-app
Docker コンテナがすぐに終了する
前のセクションのコンテナーは、コンテナーがバックグラウンドで実行されている Nginx プロセスを持っていたため、終了しませんでした。
プロセスの実行が終了すると、docker コンテナーがすぐに終了する場合があります。 これを説明するために、次のコマンドを実行して temp-web-app
という名前の新しいコンテナーを作成します。
~$ docker run -w /com/web-app/ --name temp-web-app -p 8080:80 nginx:alpine pwd
出力:
/com/web-app
このコマンドは、作業ディレクトリ /com/web-app
を出力した直後に終了することに注意してください。 これは、メイン プロセスが pwd
コマンドを実行すると、コンテナーが終了するためです。
したがって、上記のようなコマンドは、サーバー、データベース、またはアプリケーション プロセスでコンテナーを実行するためではなく、テスト目的で使用する必要があります。 以下のコマンドを使用して、temp-web-app
コンテナーのステータスを確認します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb051673c15f nginx:alpine "/docker-entrypoint.…" 14 minutes ago Exited (0) 3 minutes ago temp-web-app
初期起動時にデフォルトのコマンドが設定されるため、コンテナを再起動しようとしても機能しません。 つまり、コンテナーのメイン プロセスが終了する pwd
コマンドを実行した後、コンテナーは常に終了します。
まとめ
このチュートリアルでは、docker でコンテナを再起動する方法を学びました。 実行中および停止中のコンテナーを開始する方法について説明しました。
バックグラウンドでプロセスを実行せずにすぐに終了するコンテナを実行する目的を学びました。
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub