BLOGAzureブログ
ビルドからデプロイまで、Azureがあればコンテナを気軽にいじれます
Azure相談センターSB C&Sは、Microsoft Azureを推奨します。
ビルドからデプロイまで、Azureがあればコンテナを気軽にいじれます
皆さまこんにちは、SB C&Sの八釼(やつるぎ)です。
コンテナ型の仮想化技術が注目されてから久しいですね。軽量で可搬性にも優れるコンテナは大変ありがたいですよね。
さて、まずはコンテナを動かして理解を深めたいとか業務における簡単な検証をやってみたいという場合に、もろもろ操作するためのUIであるとかコンテナエンジンなどが必要になりますね。まずは検討するべき選択肢としてはDocker Desktopのようなツールをご自身の端末にインストールすることになると思います。
ただ、所属する組織のポリシーであるとかライセンス費用であるとか、スペックの問題(ツールによっては結構重たい)などなどによってこのようなツールがインストールもしくは利用できないこともあるのではないでしょうか?
そんな時はぜひAzureを使ってみてください。
「単純にAzure VMで検証環境を構築するってオチじゃないの?」
と思われた方、ご安心くださいそうではございません。そして断然簡単かつ手間のかからない方法です。
できる限り手軽にしたいのでAzure portal(ブラウザ)からAzure Cloud Shellを起動します。実際にはこれを使えるようにするためには若干の設定というか準備が必要なのですが、すぐに終わる上に非常に簡単なので割愛します。シェル環境はBashを選択しました。
ホームディレクトリに(必ずしもこのようにする必要はありませんが)以下の構成でディレクトリを一つとファイルを二つ作成します。
.
├── src
│ └── index.html
└── Dockerfile
今回デプロイするコンテナにポート80番でアクセスするとHello World!と表示するようにしたいのでindex.htmlというファイルを作成します。ちなみに、このファイルには以下のようにコードを記述しました。
<h1>Hello World!</h1>
Dockerfileという名前の定義ファイルを作成します。記述内容は以下の通りです。今回はnginxを用いた超簡易なWebサーバーコンテナを起動させることにしました。コンテナイメージ作成(build)時に事前に作成したindex.htmlが/usr/share/nginx/htmlにコピーされて配置されるように記述します。
FROM nginx:latest
COPY ./src/index.html /usr/share/nginx/html
EXPOSE 80
諸般の事情によりDocker Hubのリポジトリにイメージがアップロードできないということがあるかと思いますし、Azureでアプリ開発するのであればACRを用いる方が統制が効きやすく色々と都合が良い場合が多いので、まずはそのリソースをデプロイします。GUIからでもCUIからでも、はたまたBicepコードからでも良いです。ご自身のご都合の良い方法にて実施していただければと思いますが、私の場合過去に作成したコードがあって楽なのでこれを活用しました。
【関連記事】Azure OpenAI ServiceリソースデプロイをBicepモジュールでやってみよう
なお、本番運用にはセキュリティの観点からこの方法でレジストリ認証を行わないと思いますが、今回はお手軽検証環境ですのでレジストリの管理者アカウントを用いて認証することにします。そのためこれを有効化しました。
$ az acr update -n acrypzm3qbq7ni5i --admin-enabled true
また、後の工程で必要となるので、管理者アカウントのユーザー名とパスワードを事前に取得して控えておきます。
$ az acr credential show --name acrypzm3qbq7ni5i
{
"passwords": [
{
"name": "password",
"value": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"name": "password2",
"value": "oooooooooooooooooooooooooooooooooooooooooooooooooooo"
}
],
"username": "acrypzm3qbq7ni5i"
}
事前に作成したDockerfileを基にビルドを実行します。つまりdocker buildコマンドに相当するAzure CLIコマンドを用います。ホームディレクトリにDockerfileが配置されているので、ここで以下のコマンドを実行します。成功するとリポジトリが作成されイメージもpushされた状態になります。
$ az acr build --registry acrypzm3qbq7ni5i --image helloacrtasks:v1 .
ビルド(プッシュ)したイメージを使用してコンテナを作成し起動させるため、以下のaz containerコマンドを実行します。docker runに相当するコマンドを打ったと考えて頂いて差し支えありません。
$ az container create --resource-group licensecounter-blog-acr-rg \
--name acrypzm3qbq7ni5i \
--image acrypzm3qbq7ni5i.azurecr.io/helloacrtasks:v1 \
--registry-login-server acrypzm3qbq7ni5i.azurecr.io \
--ip-address Public --location japaneast \
--registry-username acrypzm3qbq7ni5i \
--registry-password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ちなみに、az containerコマンドはAzure Container Instances(ACI)の管理に用いるものです。本サービスの詳細については以下の公式ドキュメントをご確認ください。
今回作成したコンテナインスタンスにはパブリックIPを割り当てましたので、まずはIPアドレスを確認します。
$ az container show --resource-group licensecounter-blog-acr-rg \
--name acrypzm3qbq7ni5i \
--query ipAddress.ip \
--output table
Result
-------------
4.189.199.149
では、これにWebブラウザにてアクセスしてみます。
はい、想定通りの表示ですね。問題なくコンテナが作成され起動していることが確認できました。
起動したコンテナにはシェルを起動して接続もできます。ちなみに、今回ビルドしたベースイメージはDebian系のLinuxディストリビューションです。
では、以下のaz container execコマンドを実行しBashを起動して接続してみます。docker execに相当するコマンドを打ったと考えて頂いて差し支えありません。
$ az container exec \
--resource-group licensecounter-blog-acr-rg \
--name acrypzm3qbq7ni5i \
--exec-command /bin/bash
root@SandboxHost-638585015028685282:/#
rootユーザーにてログインできました。せっかくなので何かコマンドを打ってみます。Debian系であることが確認できましたね。
root@SandboxHost-638585015028685282:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL=https://bugs.debian.org/
せっかくなので、コンテナイメージ作成時に指定したファイルがちゃんとコピーされたかも確認してみます。Webブラウザにて確認はできていますが、違う角度から。当然ではありますが問題ないですね。
root@SandboxHost-638585015028685282:/# ls /usr/share/nginx/html
50x.html index.html
root@SandboxHost-638585015028685282:/# cat /usr/share/nginx/html/index.html
<h1>Hello World!</h1>
ACIについて今回は単一のコンテナを扱いましたが、現実的にコンテナを活用する場合にはコンテナグループという単位で複数のコンテナをまとめて取り扱うことになるかと思います。加えてコンテナをデプロイするサービスについてもACIは一例であり、AKSやWeb App (for Containers)などなど他にも色々あります。
【関連記事】Azure Kubernetes ServicesをAzureリソースの視点で見てみよう
Azureにはコンテナに関連するサービスが多くあり、適切な選択が難しいかもしれません。その他にも色々とお困りごとが出てくるかもしれませんが、その際にはぜひとも法人でのAzure導入前の相談窓口であるAzure相談センターまでお気軽にお問い合わせいただけますと幸いです。弊社では、ユーザー様のご状況やご要望を踏まえて最適な形でのAzureの導入のご支援を提供しており、Azure に精通したスタッフが丁寧にご回答させていただきます。また皆様のAzureを前提とするコンテナアプリケーション開発の一助となるべく尽力いたします。
Azureの導入や運用に関するお悩みは SoftBankグループのSB C&Sにご相談ください
SoftBankグループのSB C&Sは、さまざまな分野のエキスパート企業との協力なパートナーシップによって、多岐にわたるAzure関連ソリューションをご提供しています。
「Azureのサービスを提供している企業が多すぎて、どの企業が自社にベストか分からない」
「Azure導入のメリット・デメリットを知りたい」
「Azureがどういう課題を解決してくれるのか知りたい」
など、Azureに関するお悩みならお気軽にお問い合わせください。
中立的な立場で、貴社に最適なソリューションをご提案いたします。
クラウドサーバーご検討中の方必見
お役立ち資料一覧
そのようなお悩みはありませんか?
Azure相談センターでは、上記のようなお悩みを解決する
ダウンロード資料を豊富にご用意しています。
是非、ご覧ください。
オンプレミスからクラウドへの移行を検討している方のために、安心・スムーズな移行を実現する方法を解説し、
運用コストの削減に有効な「リザーブドインスタンス」もご紹介するホワイトペーパーです。
導入から活用まで専門スタッフが回答いたします。
お気軽にお問い合わせください。