はじめに
この実験では、docker compose unpause コマンドを使用して一時停止したサービスを再開する方法を学びます。まず、Nginx イメージを使用した基本的な Web サービスを定義するシンプルな docker-compose.yml ファイルを作成します。
セットアップ後、docker compose up でサービスを起動し、docker compose pause でそれらを一時停止します。最後に、docker compose unpause を使用してサービスを再開し、正しく動作していることを確認します。この実践的な演習を通じて、Docker Compose サービスの一時停止と再開の実用的な応用を実証します。
シンプルな docker-compose.yml ファイルを作成
このステップでは、基本的な docker-compose.yml ファイルを作成します。このファイルは Docker Compose の核心であり、アプリケーションのサービス、ネットワーク、ボリュームを定義します。開始前に、この環境にはプリインストールされていないため Docker Compose をインストールする必要があります。
まず、Docker Compose をインストールしましょう。最新の安定版リリースをダウンロードし、実行可能にします。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
次に、バージョンを確認してインストールを検証します。
docker-compose --version
コンソールにバージョン情報が表示されれば、Docker Compose が正しくインストールされたことを確認できます。
次に、この実験の作業ディレクトリである ~/project ディレクトリに移動します。
cd ~/project
このディレクトリに docker-compose.yml という名前のファイルを作成します。このファイルは nginx イメージを使用したシンプルなサービスを定義します。ファイルの作成と編集には nano エディタを使用します。
nano docker-compose.yml
nano エディタ内で、以下の内容を貼り付けます:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
この docker-compose.yml ファイルの内容を分解してみましょう:
version: '3.8'は Docker Compose ファイルフォーマットのバージョンを指定しますservices:はアプリケーションを構成するさまざまなサービスを定義しますweb:は私たちのサービス名です。サービスには任意の名前を付けることができますimage: nginx:latestはこのサービスで使用する Docker イメージを指定します。ここでは公式 Nginx イメージの最新バージョンを使用しています。このイメージがローカルに存在しない場合、Docker Compose はサービス起動時に自動的に Docker Hub から取得しますports:はホストマシンとコンテナ間のポートマッピングを設定します。"80:80"はホストのポート 80 をコンテナのポート 80 にマッピングします。これにより、ホストマシンでhttp://localhost(または VM の IP アドレス)にアクセスすることで、コンテナ内で動作する Nginx Web サーバーにアクセスできます
内容を貼り付けた後、Ctrl + O を押してファイルを保存し、Enter でファイル名を確認し、最後に Ctrl + X を押して nano エディタを終了します。
これで最初の docker-compose.yml ファイルが正常に作成されました。次のステップでは、このファイルを使用して Nginx サービスを起動します。
docker compose up でサービスを起動
このステップでは、docker-compose up コマンドを使用して docker-compose.yml ファイルで定義したサービスを起動します。このコマンドはサービスのコンテナをビルドし、(再) 作成、起動、アタッチします。
前のステップで docker-compose.yml ファイルを作成した ~/project ディレクトリにいることを確認してください。
cd ~/project
以下のコマンドを実行して Nginx サービスを起動します:
docker-compose up -d
このコマンドの説明:
docker-compose upはdocker-compose.ymlファイルで定義されたサービスを起動します-dはコンテナをデタッチドモードで実行し、バックグラウンドで動作させてターミナルをブロックしません
このコマンドを初めて実行すると、Docker Compose はシステム上に存在しない場合 nginx:latest イメージを Docker Hub からプルします。イメージのプルとコンテナの作成・起動を示す出力が表示されます。
コンテナが実行中か確認するには、docker ps コマンドを使用します。
docker ps
web サービス(またはディレクトリとサービス名に基づいた類似の名前)のエントリが Up ステータスで表示されるはずです。これは Nginx コンテナが実行中であることを示します。
また、curl を使用して公開されたポート 80 にアクセスすることで、Nginx Web サーバーがアクセス可能か確認できます。
curl http://localhost:80
ターミナルに Nginx のデフォルトウェルカムページの HTML 出力が表示されれば、コンテナ内で Nginx サーバーが実行されており、マップされたポートを通じてホストマシンからアクセス可能であることが確認できます。
docker compose pause でサービスを一時停止
このステップでは、docker-compose pause コマンドを使用して実行中のサービスを一時停止する方法を学びます。コンテナを一時停止すると、そのすべてのプロセスが一時的に中断されます。これはプロセスをシャットダウンする停止(stop)とは異なります。
docker-compose.yml ファイルがある ~/project ディレクトリに移動し、サービスが実行中であることを確認してください。
cd ~/project
以下のコマンドを実行して web サービスを一時停止します:
docker-compose pause web
web サービスが一時停止中であることを示す出力が表示されるはずです。
コンテナが一時停止状態か確認するには、docker ps コマンドを使用します。
docker ps
web サービスコンテナの STATUS 列を見てください。Up ... (Paused) のようなステータスが表示されているはずです。これでコンテナのプロセスが中断されていることが確認できます。
コンテナが一時停止中の場合、内部の Nginx Web サーバーはリクエストを処理しません。curl でアクセスしようとすると、サーバーが応答しないためリクエストがハングするかタイムアウトする可能性があります。
curl http://localhost:80
このコマンドは、コンテナが実行中だった時のようにすぐに Nginx のウェルカムページを返しません。しばらくしたら Ctrl + C を押してコマンドを中断する必要があるかもしれません。
一時停止は、現在の状態を失わずにサービスを一時的に停止する必要がある場合に便利です。
docker compose unpause でサービスを再開
このステップでは、docker-compose unpause コマンドを使用して一時停止したサービスを再開します。このコマンドは一時停止中のコンテナを再開させます。
docker-compose.yml ファイルがある ~/project ディレクトリにいることを確認してください。
cd ~/project
以下のコマンドを実行して web サービスを再開します:
docker-compose unpause web
web サービスが再開中であることを示す出力が表示されるはずです。
コンテナが一時停止状態ではなく正常に実行されていることを確認するには、再度 docker ps コマンドを使用します。
docker ps
web サービスコンテナの STATUS 列を確認してください。(Paused) 表示がなく Up ... のようなステータスが表示されているはずです。これはコンテナのプロセスが再開されたことを意味します。
再開後、コンテナ内の Nginx Web サーバーは再びリクエストを処理するようになります。公開されているポート 80 に curl でアクセスすることでこれを確認できます。
curl http://localhost:80
今度は、コンテナを最初に起動した時と同様に、すぐに Nginx のデフォルトウェルカムページの HTML 出力が返ってくるはずです。これでサービスが完全に再開されたことが確認できます。
unpause は pause の対となる操作で、一時停止状態から素早くサービスを再開させることができます。
一時停止解除後のサービス稼働確認
このステップでは、Nginx サービスが一時停止解除後に完全に動作していることを最終確認します。前のステップでコンテナの状態を確認しましたが、コンテナ内で動作しているアプリケーションが期待通りに応答していることを確認するのは良い習慣です。
~/project ディレクトリにいることを確認してください。
cd ~/project
ポート 80 で動作している Nginx Web サーバーに再度curlコマンドでアクセスします。
curl http://localhost:80
ターミナルに Nginx のデフォルトウェルカムページの HTML コンテンツが表示されるはずです。これにより、コンテナ内の Nginx プロセスが正常に動作し、コンテンツを提供していることが確認できます。
このステップは、コンテナの一時停止解除により、内部のアプリケーションが通常の操作を再開できることを理解するのに役立ちます。
最後に、Docker Compose で作成された実行中のコンテナとネットワークをクリーンアップするには、docker-compose downコマンドを使用します。このコマンドはupで作成されたコンテナ、ネットワーク、ボリュームを停止して削除します。
docker-compose down
サービスとネットワークが停止・削除されていることを示す出力が表示されます。
コンテナが実行されていないことを確認するには、docker psを使用します。
docker ps
出力には実行中のコンテナが表示されず、Nginx サービスが正常に停止・削除されたことがわかります。
まとめ
この実験では、Docker Compose を使用してサービスのライフサイクルを管理する方法を学びました。まず Docker Compose をインストールし、簡単な Nginx サービスを定義するdocker-compose.ymlファイルを作成しました。
その後、docker compose upで定義したサービスを起動し、docker compose pauseでサービスのプロセスを一時停止し、最後にdocker compose unpauseで一時停止したサービスを再開しました。各ステップの後にサービスの状態を確認し、サービス実行を制御するこれらの Docker Compose コマンドの実用的な応用を実証しました。



