docker container startとrestartの違いをわかりやすく解説!

Dockerを使っていると、コンテナの起動に関する次の2つのコマンドをよく目にします。

  • docker container start
  • docker container restart

どちらのコマンドもコンテナの「起動」に関係するため名前が似ているので、「どっちを使えばいいのか?」「具体的にどう動作が違うのか?」と迷う人は多いと思います。

そこで、この記事ではdocker container startdocker container restartの動きの違い・使い分けをわかりやすく解説します。

docker container startとrestartの違い

docker container startdocker container restartの違いを一言でまとめるとこうなります。

コマンド動作の内容
docker container start停止しているコンテナをそのまま起動する
docker container restartコンテナをいったん停止してから再起動する

つまりdocker container restartは内部的に「docker container stopdocker container start」の二つの処理を続けて実行するイメージです。

docker container startの動作

docker container startは、次のように停止中のコンテナをそのまま起動するだけのシンプルなコマンドです。

# 停止中のコンテナに対してstartを実行した場合
[停止中] ──▶ start ──▶ [起動]

docker container startは、あくまで停止していたコンテナ動かすコマンドなので、停止中のコンテナに対して実行します。

docker container restartの動作

docker container restartは、次のようにコンテナをいったん停止してから再起動するコマンドです。

# 起動中のコンテナに対してrestartを実行した場合
[起動中] ──▶ stop ──▶ start ──▶ [再起動]

# 停止中のコンテナに対してrestartを実行した場合
[停止中] ──▶ start ──▶ [起動]

内部ではdocker container stopが実行され、アプリケーションは完全に終了し、そのあとにdocker container startが走るという順序です。つまりdocker container restartを実行すると、コンテナ内のアプリケーションはゼロから再スタートするため、設定変更を反映したい場面や、アプリがフリーズしてしまった場合に有効です。

なお、docker container restartはすでに停止しているコンテナに対しても使用できます。その場合は停止状態から通常の起動処理が行われますので、docker container startと実質同じです。

docker container startとrestartの使い分け

では、どのようなときにdocker container startdocker container restartを使い分ければよいのでしょうか。

もし単純に「停止しているコンテナを再び動かしたいだけ」という状況であればdocker container startを使うのが適しています。たとえばPCを再起動した後や、Docker自体が停止した後など、コンテナが一斉に停止状態になってしまった場面ではdocker container startで十分です。また、docker container stopで停止させたあと、再度動かす場合も同様にdocker container startを使えば問題ありません。

一方でdocker container restartを使うべきなのは、明確に「再起動が必要なとき」です。具体的には、コンテナ内のアプリがフリーズして応答しなくなったとき、設定ファイルや環境変数を変更してその内容を反映したいとき、またはdocker container stopdocker container startを手作業で2回実行するのが面倒なときなどです。docker container restartを使えばstopstartの2段階の操作がまとめて実行されるため、コンテナを確実にリフレッシュしたいときに非常に便利です。

たとえばnginxコンテナを停止して再度起動する場合、通常なら次のように2行のコマンドが必要です。

docker container stop nginx
docker container start nginx

しかし同じ処理をrestartを使えば、次の1行だけで完了します。

docker container restart nginx

本記事のまとめ

この記事では『docker container startdocker container restartの動きの違い・使い分け』について説明しました。

docker container startdocker container restartは役割が明確に異なるため、状況に応じて正しく使い分けることが大切です。単純に「止まっていたものを動かしたいだけ」であればdocker container start、内部の状態を一度リセットして再起動したいときにはdocker container restartを選ぶと覚えておくと、Dockerコンテナ運用がよりスムーズになります。

お読みいただきありがとうございました。

スポンサーリンク