【Dockerコンテナ超入門】作ったイメージをAzureコンテナーインスタンスで起動する方法

Azure
スポンサーリンク

こんにちは!やましー@データ活用クラウドエンジニア(@yamashi18041)です!

今日は前回に引き続きDocker超入門記事になります。

Dockerに代表されるコンテナ技術。

まさに時代のトレンドであり、これから先、ますます重要性が高まっていく技術であることは間違いありません。

とはいうものの私自身、Dockerなどのコンテナ技術を使ったことがありませんでした。

これを知らずしてエンジニアとして名乗るのは恥ずかしい。そう思い前回から少しずつ時間を見つけて独学でチャレンジ中です。

そして、やったことをブログ残していこうと思います。

この記事を読むことで以下のようなことができるようになります。

  • Dockerfileを使ってDockerイメージを作成
  • Azureコンテナーレジストリを作成
  • 作成したDockerイメージをAzureコンテナーレジストリに登録
  • 登録したDockerイメージをAzureコンテナーインスタンスにデプロイ

設定など事細かに解説を織り織り交ぜてわかりやすいを重視して書いていきたいと思います。

前回はコンテナやDockerとは何か?についてわかりやすく解説してみました。

読んでいただいた方からも、反響をいただきました。

yutaさん、あずきぱんさん、ありがとうございます。

今日は、少し発展させて、Dockerイメージを作成してAzureクラウドでコンテナーを起動をさせてみたいと思います。

流行のサーバーレスというやつですね。

月額900円(税抜)から、高速・多機能・高安定レンタルサーバー『エックスサーバー』

コンテナは起動停止が素早く行えるので、インフラの管理が不要で起動している間のみ料金がかかかるクラウドは相性が良いのでしっかりとマスターしていきたいと思います。

それでは簡単に今回の概要から説明していきたいと思います。

[adchord]

今回やったことは下記リンクのMicrosoft Leranを題材に実際にトライしてみました。

Docker を使用してコンテナー化された Web アプリケーションを構築する - Learn
Docker を使用して、Azure Container Registry でプライベート コンテナー イメージを構築、保存、管理します。

それではアーキテクチャ図の紹介から行きたいと思います。

スポンサーリンク

DockerをAzureで起動するアーキテクチャ図

①GitHubからWEBアプリをクローン
②Dockerfileに従ってビルド(③~⑤を行う)を行いDockerイメージを作成
 ③ベースイメージをダウンロード
 ④ベースイメージを採用
 ⑤ベースイメージにWEBアプリを組み込む
⑥イメージをAzureコンテナーレジストリに登録
⑦AzureコンテナーレジストリのイメージからからAzureコンテナーインスタンスをデプロイ
⑧WEBブラウザで閲覧

スポンサーリンク

事前準備

Dockerをインストールする

事前準備としてDockerをLinuxにインストールして、Dockerデーモンを起動しておきます。

サンプルWEBアプリをGitクローンする

次にサンプルで使うWEBアプリを用意します。

今回はMicrosoftが用意してくれている架空ホテルの予約システムをサンプルとして使います。

.Net Coreを使って作られています。

こちらをGitHubからクローンしておきます。

git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
[user01@vmcentos7 work]$ git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
Cloning into 'mslearn-hotel-reservation-system'...
remote: Enumerating objects: 33, done.
remote: Total 33 (delta 0), reused 0 (delta 0), pack-reused 33
Unpacking objects: 100% (33/33), done.

クローンしたディレクトリのsrcで作業をしていきます。

cd mslearn-hotel-reservation-system/src
スポンサーリンク

Dockerfileを使ってDockerイメージを作成

Dockerfileを作成する

慣例としてsrcディレクトリの直下Dockerfileを作成します。特に拡張子はいりません。

touch Dockerfile

この時のsrcディレクトリの構成がこちら

[user01@vmcentos7 src]$ ll
合計 4
-rw-rw-r--. 1 user01 user01    0  5月 30 18:31 Dockerfile
drwxrwxr-x. 3 user01 user01  158  5月 30 18:10 HotelReservationSystem
-rw-rw-r--. 1 user01 user01 2212  5月 30 18:10 HotelReservationSystem.sln
drwxrwxr-x. 2 user01 user01  138  5月 30 18:10 HotelReservationSystemTestClient
drwxrwxr-x. 2 user01 user01   78  5月 30 18:10 HotelReservationSystemTypes

次にDockerfileに必要な処理を記述していきます。

記述する内容をざっくり説明すると、

  • ベースとなるDockerイメージを指定
  • WEBアプリケーションを組み込んでビルド
  • コンテナ起動時のポート設定
  • コンテナ起動時のWEBアプリ起動設定
vim Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:2.2
WORKDIR /src
COPY ["HotelReservationSystem/HotelReservationSystem.csproj", "HotelReservationSystem/"]
COPY ["HotelReservationSystemTypes/HotelReservationSystemTypes.csproj", "HotelReservationSystemTypes/"]
RUN dotnet restore "HotelReservationSystem/HotelReservationSystem.csproj"
COPY . .
WORKDIR "/src/HotelReservationSystem"
RUN dotnet build "HotelReservationSystem.csproj" -c Release -o /app
RUN dotnet publish "HotelReservationSystem.csproj" -c Release -o /app
EXPOSE 80
WORKDIR /app
ENTRYPOINT ["dotnet", "HotelReservationSystem.dll"]

1行目:FROM mcr.microsoft.com/dotnet/core/sdk:2.2

ベースイメージ「mcr.microsoft.com/dotnet/core/sdk:2.2」を指定します。ローカルにない場合はDockerHubから勝手に持ってきてくれます。
ちなみにDockerfileのルールとしてコメントを除いて一行目はFROMから書き始める必要があります。

2行目:WORKDIR /src

次のCOPYやRUNの為にコンテナ側の作業ディレクトリを/srcにします。

3行名:COPY [“HotelReservationSystem/HotelReservationSystem.csproj”, “HotelReservationSystem/”]
4行目:COPY [“HotelReservationSystemTypes/HotelReservationSystemTypes.csproj”, “HotelReservationSystemTypes/”]

Gitクローンしたファイルをコンテナへコピーします。

WORKDIR /srcとしてあり、相対パスによりコンテナ側には

  • /src/HotelReservationSystem/HotelReservationSystem.csproj
  • /src/HotelReservationSystemTypes/HotelReservationSystemTypes.csproj

が作られます。

5行目:RUN dotnet restore “HotelReservationSystem/HotelReservationSystem.csproj”

コンテナ内でコマンドを実行し実行結果を次のコマンド以降にも使用できるようにします。

ここで実施するコマンドはdotnet restoreです。コピーした C#の Web アプリプロジェクトの依存関係とツールをNuGet からダウンロードし復元します。

6行目:COPY . .

WEBアプリのソースコード(カレントディレクトリ)をコンテナにコピーします。

7行目:WORKDIR “/src/HotelReservationSystem”

作業ディレクトリを”/src/HotelReservationSystem”に変更します。

8行目:RUN dotnet build “HotelReservationSystem.csproj” -c Release -o /app

RUNによりdotnet buildを実行します。-c Releaseはリリース版としてビルドを行います。-o /appはDockerコンテナ内の/appにDDLを配置するオプションです。

9行目:RUN dotnet publish “HotelReservationSystem.csproj” -c Release -o /app

RUNによりdotnet publishを実行します。これにより.NET Coreのランタイムがない環境でも実行な実行ファイルを生成します。

10行目:EXPOSE 80

コンテナ起動時に接続を待ち受けるポートを指定します。80番でHTTPリクエストを待ち受けます。

11行目:WORKDIR /app

WEBアプリが配置されたディレクトリ/appを作業ディレクトリにします。

12行目:ENTRYPOINT [“dotnet”, “HotelReservationSystem.dll”]

ENTRYPOINTによりコンテナ起動(docker run)の際にdotnet HotelReservationSystem.dllが実行され、WEBアプリケーションが立ち上がります。

Dockerfileに基づいてDockerイメージを作成する

作成したDockerfileに基づいてDockerイメージを作成します。

Dockerfileがある場所「.」を指定してコマンドを実施することでDockerfileを読み込んでビルドが行われます。

reservationsystemという名前のイメージを作ります。タグは指定していないのでlatestのみが作成されます。

sudo docker build -t reservationsystem .
[user01@vmcentos7 src]$ sudo docker build -t reservationsystem .
Sending build context to Docker daemon   29.7kB
Step 1/12 : FROM mcr.microsoft.com/dotnet/core/sdk:2.2
2.2: Pulling from dotnet/core/sdk
146bd6a88618: Pull complete
9935d0c62ace: Pull complete
db0efb86e806: Pull complete
e705a4c4fd31: Pull complete
563ac9aa7c80: Pull complete
9db5b5c16f62: Pull complete
ff05a093e8aa: Pull complete
Digest: sha256:42699bba2fe4545dd753694499e6db08478ba5b3bcc34b929e7e324d4c115449
Status: Downloaded newer image for mcr.microsoft.com/dotnet/core/sdk:2.2
 ---> 2357b6790b9d
Step 2/12 : WORKDIR /src
 ---> Running in c70d33cb8cd8
Removing intermediate container c70d33cb8cd8
 ---> c0dd2646e016
Step 3/12 : COPY ["HotelReservationSystem/HotelReservationSystem.csproj", "HotelReservationSystem/"]
 ---> fce6cab59dbd
Step 4/12 : COPY ["HotelReservationSystemTypes/HotelReservationSystemTypes.csproj", "HotelReservationSystemTypes/"]
 ---> f2d508915249
Step 5/12 : RUN dotnet restore "HotelReservationSystem/HotelReservationSystem.csproj"
 ---> Running in 2590e1950645
  Restore completed in 5.65 sec for /src/HotelReservationSystemTypes/HotelReservationSystemTypes.csproj.
  Restore completed in 12.59 sec for /src/HotelReservationSystem/HotelReservationSystem.csproj.
Removing intermediate container 2590e1950645
 ---> c50f64bc38c2
Step 6/12 : COPY . .
 ---> cca7acd65a4f
Step 7/12 : WORKDIR "/src/HotelReservationSystem"
 ---> Running in c0246f4fca75
Removing intermediate container c0246f4fca75
 ---> 6ed5660d8927
Step 8/12 : RUN dotnet build "HotelReservationSystem.csproj" -c Release -o /app
 ---> Running in e937623d5034
Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 68.33 ms for /src/HotelReservationSystemTypes/HotelReservationSystemTypes.csproj.
  Restore completed in 87.37 ms for /src/HotelReservationSystem/HotelReservationSystem.csproj.
  HotelReservationSystemTypes -> /app/HotelReservationSystemTypes.dll
  HotelReservationSystem -> /app/HotelReservationSystem.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.95
Removing intermediate container e937623d5034
 ---> efaef60407e4
Step 9/12 : RUN dotnet publish "HotelReservationSystem.csproj" -c Release -o /app
 ---> Running in 02b106ff3c30
Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 73.59 ms for /src/HotelReservationSystemTypes/HotelReservationSystemTypes.csproj.
  Restore completed in 90.51 ms for /src/HotelReservationSystem/HotelReservationSystem.csproj.
  HotelReservationSystemTypes -> /src/HotelReservationSystemTypes/bin/Release/netcoreapp2.1/HotelReservationSystemTypes.dll
  HotelReservationSystem -> /src/HotelReservationSystem/bin/Release/netcoreapp2.1/HotelReservationSystem.dll
  HotelReservationSystem -> /app/
Removing intermediate container 02b106ff3c30
 ---> 77f852b5e973
Step 10/12 : EXPOSE 80
 ---> Running in 08cab1c836e5
Removing intermediate container 08cab1c836e5
 ---> 478f4cc63f1f
Step 11/12 : WORKDIR /app
 ---> Running in 95ebc8344212
Removing intermediate container 95ebc8344212
 ---> 4621ea0ae72b
Step 12/12 : ENTRYPOINT ["dotnet", "HotelReservationSystem.dll"]
 ---> Running in 4bb57898fcfb
Removing intermediate container 4bb57898fcfb
 ---> 14f55c7ee119
Successfully built 14f55c7ee119
Successfully tagged reservationsystem:latest

完了したので、以下のコマンドでできたイメージを確認します。

sudo docker image list
[user01@vmcentos7 ~]$ sudo docker image list
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
reservationsystem                   latest              14f55c7ee119        15 hours ago        1.87GB
ubuntu                              latest              1d622ef86b13        5 weeks ago         73.9MB
hello-world                         latest              bf756fb1ae65        4 months ago        13.3kB
mcr.microsoft.com/dotnet/core/sdk   2.2                 2357b6790b9d        5 months ago        1.74GB

reservationsystemがありました。(CREATEDが15 hours agoになっているのは前日作って記事を書いているからです汗)

出来たイメージからお試しでコンテナを起動してみる

次にできたイメージを実際に試してみたいと思います。

reservationsystemイメージを使ってreservationsというコンテナを起動します。

起動したコンテナはDockerfileで指定した通りポート80番で待ち受けるので、-p 8080:80によりホストコンピュータの8080とつないで、外の環境からは8080でアクセスできるようにしています。

sudo docker run -p 8080:80 -d --name reservations reservationsystem
[user01@vmcentos7 src]$ sudo docker run -p 8080:80 -d --name reservations reservationsystem
2501767b06daee3d4fd7ded535c2aa2ab73d5af9ea7b367cec0ae038d5dd9fbf

実行したコンテナの状態を確認してみます。

sudo docker ps -a
[user01@vmcentos7 src]$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS                  NAMES
2501767b06da        reservationsystem   "dotnet HotelReserva…"   8 minutes ago       Up 8 minutes            0.0.0.0:8080->80/tcp   reservations

コンテナがアップしていることの確認が取れたので実際にWEBブラウザでアクセスしてみたいと思います。

今回はAzureにある仮想マシンでコンテナを実行しているので、そのアドレスにアクセスします。

http://fqdn:8080/api/reservations/1 

実行した結果、 Web アプリによって予約数が 1 のデータを含む、JSON ドキュメントが表示されましたのでうまくいきました。

テストは成功したのでコンテナを削除していきます。削除の前にまず、コンテナを停止しておきます。

sudo docker container stop reservations
[user01@vmcentos7 src]$ sudo docker container stop reservations
reservations

停止したことを確認しておきます。

sudo docker ps -a
[user01@vmcentos7 src]$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
2501767b06da        reservationsystem   "dotnet HotelReserva…"   11 minutes ago      Exited (0) 40 seconds ago                       reservations

STATUSがExitedになっているのでコンテナを削除します。

sudo docker rm reservations
[user01@vmcentos7 src]$ sudo docker rm reservations
reservations
スポンサーリンク

作成したDockerイメージをAzureコンテナーレジストリに登録

Azureに新しくコンテナーレジストリを作成する

DockerイメージをAzureコンテナーレジストリに登録するためにリソースを作成します。

Azureのポータルにアクセスします。

①「すべてのサービス」を選択します。

②「コンテナー」を選択します。

③「コンテナーレジストリ」を選択します。

①「+追加」を選択します。

コンテナーレジストリ作成の基本設定項目

プロジェクト詳細

①「サブスクリプション」「リソースグループ」は適当なやつを使います。

インスタンス詳細

②「レジストリ名」好きなレジストリ名を指定します。今回は「ymstctrreg」としました。今後Dockerのログインなどに使います。

③「場所」イメージを保管する地域を選択します。今回は私の家から近い「東日本」を選択しました。

④「SKU」コンテナーレジストリでできることのレベルを以下の3つから選択します。

  • Basic
  • Standard
  • Premium

違いは無料で使えるストレージ容量や通信速度、プライベートリンクなどのサービスが使えたり使えなかったりします。詳細はこちら。今回は一番安い「Basic」を選択します。

引用:https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry-skus
[2020/6/1]

コンテナーレジストリ作成のネットワーク設定項目

ネットワークはPremium SKUを使用した場合、プライベートエンドポイントが選択できるようになります。プライベートエンドポイントを使用すると、VNETのプライベートIPアドレスでアクセスするため、インターネットを遮断したい場合に使います。

今回は「パブリックエンドポイント(すべてのネットワーク)」のままです。

①「次へ:暗号化>」を選択します。

コンテナーレジストリ作成の暗号化設定項目

コンテナーレジストリではDockerイメージを登録する際SKUに限らず必ず暗号化されます。そして、イメージを取り出す際に複合されます。

Premium SKUを使うことで、Key Vault(キーコンテナー)に暗号化キー(カスタマーマネージドキー)を登録してそれを使ってDockerイメージを暗号化することができます。使わない場合はMicrosoftのキーで暗号化することになります。

今回は「カスタマーマネージドキー」は「無効」のままです。

①「次へ:タグ>」を選択します。

コンテナーレジストリ作成のタグ設定項目

リソースにタグをつけて管理することができますが今回は使用しません。

①「次へ:確認および作成>」を選択します。

コンテナーレジストリを作成する

設定に問題がないことを確認します。

①「作成」を選択します。

コンテナーレジストリの管理者ユーザーを有効にする

作成が完了したらリソースへアクセスします。

①「アクセスキー」を選択します。

②「管理者ユーザー」を「有効」にします。

これによりユーザー名とパスワードが発行され、Dockerコマンドでログインして、レジストリにイメージを登録することができるようになります。

作成したコンテナーレジストリに作成したDockerイメージを登録

Dockerのターミナルにもどって以下のコマンドを実行します。

コンテナーレジストリにログインする

ログインサーバーやパスワードは前項のアクセスキーを参考にログインします。

sudo docker login ymstctrreg.azurecr.io
[user01@vmcentos7 src]$ sudo docker login ymstctrreg.azurecr.io
Username: ymstctrreg
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
docker login
docker login: Login to a registry.
Login Succeeded

ログインが完了しました。

Dockerイメージにタグをつける

Dockerイメージを識別しやすいようにローカルの「reservationsystem」イメージに「v1」タグを付けます。

sudo docker image tag reservationsystem reservationsystem:v1
[user01@vmcentos7 src]$ sudo docker image tag reservationsystem reservationsystem:v1
[user01@vmcentos7 src]$ sudo docker image ls
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
reservationsystem                   latest              14f55c7ee119        17 hours ago        1.87GB
reservationsystem                   v1                  14f55c7ee119        17 hours ago        1.87GB

ローカルに「v1」タグ付けしたDockerイメージが確認できました。

コンテナーレジストリにもタグをつける

Azureコンテナーレジストリにもリポジトリを作成しタグをつけます。

sudo docker tag reservationsystem:v1 ymstctrreg.azurecr.io/reservationsystem:v1

コンテナーレジストリに登録する

docker pushでイメージをAzureコンテナーレジストリに登録します。

sudo docker push reservationsystem:v1 ymstctrreg.azurecr.io/reservationsystem:v1
[user01@vmcentos7 src]$ sudo docker push ymstctrreg.azurecr.io/reservationsystem:v1
The push refers to repository [ymstctrreg.azurecr.io/reservationsystem]
6a52a93dcfbe: Pushed
5fa8e3ff56b4: Pushed
9aa69dbe0cce: Pushed
7c58bd8f1b19: Pushed
ce32cc23d99e: Pushed
32409c6d3570: Pushed
3acb5a36dd49: Pushed
b668f0edb776: Pushed
bbf1566d0fe0: Pushed
99064051b3ca: Pushed
bee1e39d7c3a: Pushed
1f59a4b2e206: Pushed
0ca7f54856c0: Pushed
ebb9ae013834: Pushed
v1: digest: sha256:311cae36e9d4766ad59bc30a93223db6d9de8502996a17299b8ca6cf0e56435a size: 3264

登録したイメージをポータルから確認する

①「リポジトリ」を選択します。

②「reservationsystem」を選択します。

①タグ「v1」を選択します。

登録されたことが確認できました。

次はいよいよコンテナーをデプロイします。

スポンサーリンク

登録したDockerイメージをAzureコンテナーインスタンスにデプロイ

新しくAzureコンテナーインスタンスを作成しDockerをデプロイする

Azureコンテナインスタンスをポータルから作成していきます。

①「すべてのサービス」を選択します。

②「コンテナー」を選択します。

③「コンテナーインスタンス」を選択します。

①「+追加」を選択します。

プロジェクト詳細

①「サブスクリプション」「リソースグループ」は適当なやつを使います。

コンテナー詳細

②「コンテナー名」好きなコンテナー名を指定します。今回は「ymstctr01」としました。

③「地域」コンテナーをデプロイする地域を選択します。今回は私の家から近い「東日本」を選択しました。

④「イメージのソース」デプロイするコンテナーのイメージが置かれているレジストリの種類を選択します。今回は先ほどイメージを登録した「Azureコンテナーレジストリ」を選択します。

⑤「レジストリ名」レジストリの名前を指定します。今回は先ほど作成したレジストリ名「ymstctrreg」を指定します。

⑥「イメージ」デプロイするコンテナーのイメージ名を指定します。こちらも同様にイメージ名「reservationsystem」を指定します。

⑦「イメージ タグ」デプロイするコンテナーのイメージのタグを指定します。こちらも同様に先ほど登録した「v1」を指定します。

⑧「サイズ」デプロイするサーバーのスペックを要件に合わせて指定します。今回は特に変更せず「1 vcpu、1.5 GiB メモリ、0 gpu」

⑨「ネットワーク>」を選択します。

①「ネットワークの種類」コンテナーインスタンスをどのネットワークに作成するかを選択します。今回は「パブリック」を選択しインターネットからアクセスを行いえるようにします。

②「DNS 名ラベル」DNSによるアクセスを行えるよう名前を付けます。今回は「ymstctr」としました。

③「ポート」「ポートのプロトコル」コンテナにアクセスする際のポートの設定です。今回は「80」「TCP」としました。

④「次:詳細>」を選択します。

①「再起動ポリシー」次の選択ができます

  • 失敗時
    コンテナーで実行されたプロセスが失敗 (0 以外の終了コードで終了) した場合にのみ、コンテナー グループ内のコンテナーを再起動します。 コンテナーは少なくとも 1 回実行されます。
  • 常に行う
    コンテナー グループ内のコンテナーを常に再起動します。 
  • なし
    コンテナー グループ内のコンテナーを再起動しません。 コンテナーは最大で 1 回実行されます。

一度しか実行しないタスクの場合は「失敗時」か「なし」を選びます。永続的に処理を行う場合は「常に行う」を選択します。今回は「失敗時」にしてみました。

「環境変数」や「コマンドのオーバーライド」は今回不要なので実施しません。

②「次:タグ>」を選択します。

リソースにタグをつけて管理することができますが今回は使用しません。

①「次へ:確認および作成>」を選択します。

作成のための検証を待ちます。設定項目に間違いがなければ

①「作成」を選択します。

作成が完了したらリソースを見てみます。

①「コンテナー」を選択します。

②「Created」となっていることを確認します。

コンソールをつないでみます。

①接続を選択し、Shellを選びます。

②コンソールにでディストリビューションを確認してみました。今回はDebian9.11が稼働しています。

いよいよ、コンテナのWEBアプリケーションにWEBブラウザからアクセスしてみます。

スポンサーリンク

WEBブラウザでデプロイしたコンテナにアクセス

①FQDNを取得し、WEBブラウザでアクセスします。

http://ymstctr.japaneast.azurecontainer.io/api/reservations/1 

うまくJSONを取得することができました。

スポンサーリンク

まとめ

今回はDockerfileからイメージを作成し、Azureを使ってイメージの管理、イメージからコンテナーをデプロイまでやってみました。

やってみた感想としては、1つ1つの項目を理解しながらやっていたたので時間がかかってしまいましたが、作業自体は非常に簡単で途中エラーになることもなくスムーズにいきました。

クラウドにおけるコンテナ技術はこれ以外にもまだまだあります。クラウドとコンテナは相性が良いのでさらに進歩していくのでこれからもキャッチアップを図っていきたいと思います。

最後に今回の流れを掲載しておきます。

  • Dockerfileを使ってDockerイメージを作成
    • Dockerfileを作成
    • ベースとなるDockerイメージをダウンロード
    • ダウンロードしたイメージにWEBアプリを追加
    • Dockerfileに基づいてDockerイメージを作成
  • 作成したDockerイメージをAzureコンテナーレジストリに登録
    • Azureに新しくコンテナーレジストリを作成
    • 作成したコンテナーレジストリに作成したDockerイメージを登録
  • 登録したDockerイメージをAzureコンテナーインスタンスにデプロイ
    • 新しくAzureコンテナーインスタンスを作成しDockerをデプロイ
  • WEBブラウザでデプロイしたコンテナにアクセス

最後までご覧いただきありがとうございました。

以上、やましー@データ活用クラウドエンジニア(@yamashi18041)でした。

タイトルとURLをコピーしました