Docker化された環境では、複数のイメージを使用し、多くのコンテナーを操作しています。イメージからコンテナーを実行すると、Dockerイメージは自動的に更新されないため、そのバージョンの実行が続行されます。手動で更新する必要がある場合があります。最新のDockerイメージからコンテナを実行することを常にお勧めします。
このガイドでは、実行中のコンテナをダウンタイムなしで更新する方法の実践的な例を示します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の新しいUbuntu20.04サーバー
- サーバーで構成されているrootパスワード
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてUbuntu20.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Ubuntu 20.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
apt-get update -y
ステップ2–DockerCEとDockerComposeをインストールする
まず、次のコマンドを使用して、必要なすべての依存関係をインストールします。
apt-get install git apt-transport-https ca-certificates curl software-properties-common -y
次に、次のコマンドを使用してDockerGPGキーとリポジトリを追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
リポジトリが追加されたら、次のコマンドを使用してDockerとDockercomposeをインストールします。
apt-get install docker-ce docker-compose -y
両方のパッケージがインストールされたら、次のステップに進むことができます。
ステップ3–Docker作成ファイルを作成する
このチュートリアルでは、Dockerネットワーク、ボリューム、およびdocker-compose.ymlファイルを作成してGhostコンテナーをデプロイします。
まず、次のコマンドを使用して、netという名前のネットワークとghostという名前のボリュームを作成します。
docker network create net docker volume create ghost
次に、次のコマンドを使用してGhostプロジェクトのディレクトリを作成します。
mkdir Ghost
次に、ディレクトリをGhostに変更し、docker-compose.ymlファイルを作成します。
cd Ghost nano docker-compose.yml
次の行を追加します:
version: '3.5' services: ghost: image: ghost:3.36 volumes: - ghost:/var/lib/ghost/content environment: - VIRTUAL_HOST=ghost.example.com - url=http://ghost.example.com - NODE_ENV=production restart: always networks: - net volumes: ghost: external: true networks: net: external: true
終了したら、ファイルを保存して閉じます。
上記のファイルは、Ghostイメージバージョン3.36をダウンロードし、ドメインghost.example.comのGhostコンテナを作成します。
ステップ4–ゴーストコンテナを作成する
次に、ディレクトリをGhostに変更し、次のコマンドを使用してGhostコンテナを起動します。
docker-compose up -d
次の出力が得られるはずです:
Pulling ghost (ghost:3.36)... 3.36: Pulling from library/ghost bb79b6b2107f: Pull complete 99ce436c3449: Pull complete f7bdc31da5f5: Pull complete 7a1300b9ff59: Pull complete a495c68fa838: Pull complete 6e362a39ec35: Pull complete b68b4f3c36f7: Pull complete 41f8b02d4a71: Pull complete 3ecc736ea4e5: Pull complete Digest: sha256:595c759980cd22e99037811397012908d89efb799776db222a4be6d4d892917c Status: Downloaded newer image for ghost:3.36 Creating ghost_ghost_1 ... done
次のコマンドでゴーストイメージを確認できます:
docker images
出力:
REPOSITORY TAG IMAGE ID CREATED SIZE ghost 3.36 455ce1645479 4 months ago 440MB
次のコマンドを使用してGhostコンテナを確認することもできます。
docker ps
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4b51b1aafc8 ghost:3.36 "docker-entrypoint.s…" 23 seconds ago Up 20 seconds 2368/tcp ghost_ghost_1
ステップ5–Docker作成ファイルを更新する
このセクションでは、Docker作成ファイルを更新し、Ghostのバージョンを3.36から3.37.1に変更します。
nano docker-compose.yml
次の変更を行います:
version: '3.5' services: ghost: image: ghost:3.37.1 volumes: - ghost:/var/lib/ghost/content environment: - VIRTUAL_HOST=ghost.example.com - url=http://ghost.example.com - NODE_ENV=production restart: always networks: - net volumes: ghost: external: true networks: net: external: true
終了したら、ファイルを保存して閉じます。
ステップ6–新しいゴーストコンテナを起動する
次に、スケーリング方法を使用して、古いGhostコンテナに影響を与えずに新しいGhostコンテナを作成します。次のコマンドで実行できます:
cd Ghost docker-compose up -d --scale ghost=2 --no-recreate
次の出力が得られるはずです:
Pulling ghost (ghost:3.37.1)... 3.37.1: Pulling from library/ghost bb79b6b2107f: Already exists 99ce436c3449: Already exists 7f4b5e228565: Pull complete de71eab7febf: Pull complete 29961d2eb573: Pull complete 923f84e249ab: Pull complete dfad6f73fc3d: Pull complete b16cf83b3022: Pull complete 387b2254843c: Pull complete Digest: sha256:fad0c2631cbba3d6c61da6fa5ef39da201780f2ae64ce51f3d5ebb412ca2564b Status: Downloaded newer image for ghost:3.37.1 Starting ghost_ghost_1 ... done Creating ghost_ghost_2 ... doneの新しいイメージをダウンロードしました
次のコマンドを使用して、新しいGhostイメージを確認できます。
docker images
出力:
REPOSITORY TAG IMAGE ID CREATED SIZE ghost 3.37.1 c64d108acdfe 3 months ago 439MB ghost 3.36 455ce1645479 4 months ago 440MB
次のコマンドを使用して、新しいGhostコンテナを確認することもできます。
docker ps
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c21550f39440 ghost:3.37.1 "docker-entrypoint.s…" 33 seconds ago Up 31 seconds 2368/tcp ghost_ghost_2 d4b51b1aafc8 ghost:3.36 "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 2368/tcp ghost_ghost_1
ステップ7–新しいゴーストコンテナをスケーリングする
この時点で、両方のGhostコンテナは同じ構成を使用して実行されています。次に、古いGhostコンテナを停止して削除します。
docker container stop ghost_ghost_1 docker container rm ghost_ghost_1
次に、次のコマンドを実行して、構成を元の設定に縮小します。
cd Ghost docker-compose up -d --scale ghost=1 --no-recreate
詳細については、新しいGhostコンテナログを確認することもできます。
docker logs ghost_ghost_2
出力:
[2021-03-05 04:50:13] INFO Blog is in maintenance mode. [2021-03-05 04:50:13] INFO Ghost is running in production... [2021-03-05 04:50:13] INFO Your site is now available on http://ghost.example.com/ [2021-03-05 04:50:13] INFO Ctrl+C to shut down [2021-03-05 04:50:13] INFO Ghost boot 3.581s [2021-03-05 04:50:13] INFO Creating database backup [2021-03-05 04:50:13] INFO Database backup written to: /var/lib/ghost/content/data/ghost.ghost.2021-03-05-04-50-13.json [2021-03-05 04:50:13] INFO Updating portal button setting to false [2021-03-05 04:50:13] INFO Blog is out of maintenance mode.
これで、Ghostコンテナが新しいGhostイメージで更新されました。
結論
上記のガイドでは、ダウンタイムなしでDockerコンテナを更新する方法を学びました。 Atlantic.NetからVPSホスティングでDockerコンテナを更新することから始めましょう!