AppRunではじめるコンテナ実行環境入門(1)AppRun共用型でコンテナでウェブ環境を起動する

さくらのクラウド AppRun
さくらのクラウドでは、コンテナの実行環境をマネージドサービスとして提供し、気軽にコンテナリソースを起動できる AppRun というサービスを提供しています。
インフラ管理なしで実行・公開できるアプリケーション実行基盤 として提供され、サーバーの構築やOS管理、スケーリング設定といった作業を意識することなく、開発者はアプリケーションの実装とデプロイに集中できる点が大きな特徴です。
AppRun は、コンテナイメージを指定するだけでアプリケーションを起動でき、外部からのアクセスに応じて自動的にスケールするため、ウェブ用ロードバランサー機能も内蔵されています。アクセスがないときはリソース消費を抑え、負荷が増えた際には自動的に処理能力を拡張するため、トラフィック変動の大きいWebアプリやAPIにも適しています。
従来、Webアプリケーションを公開するには、仮想サーバーの作成、ネットワーク設定、ロードバランサーの構成、スケール設計など、多くのインフラ作業が必要でした。AppRun ではこれらの作業が不要となり、「コンテナをデプロイする」というシンプルな操作だけでアプリケーションを公開できます。これにより、個人開発や小規模チームだけでなく、PoC(概念実証)や短期間でのサービス立ち上げなど、スピードが求められる場面でも有効に活用できるサービスです。
さっそくやってみる
1. コンテナレジストリの作成
AppRunを使ってコンテナを起動するためには、コンテナの保存場所であるコンテナレジストリからコンテナイメージをダウンロードする必要があります。AppRunは記事執筆時点でさくらのクラウドが提供するコンテナレジストリのみに対応しているためまずはそちらを作成します。
コントロールパネルの グローバル → コンテナレジストリ を左ペインから選択します。
追加 をクリックし表示されるウインドウに、適当な名前、コンテナレジストリ名などを入力して 作成 をクリックします。今回は手順をシンプルにするために誰でも操作可能なPublicでイメージをPush & Pull可能なコンテナレジストリを作成します。
なお今後Docker Hub等主要コンテナレジストリへの対応を予定しておりますので、対応した時点でまた弊社ウェブサイトで告知させていただく予定です。
作成されたらイメージをアップロードできるユーザーを作成しておきます。
2. コンテナイメージをコンテナレジストリへアップロード
次に先ほど作成したコンテナレジストリにコンテナイメージをアップロードします。本来アップロードするコンテナイメージをまず作成する必要がありますが、今回は手順をシンプルにするため、docker.io からパブリックに配布されている nginx イメージをPull(ローカルにダウンロード)したのち、先ほど作成したコンテナレジストリにアップロードします。
まず以下のコマンドで nginx のイメージを pull します。
% docker pull nginx:latest
latest: Pulling from library/nginx
02d7611c4eae: Downloading [=======> ] 4.354MB/29.78MB
dcea87ab9c4a: Downloading [=======> ] 4.669MB/29.99MB
35df28ad1026: Download complete
99ae2d6d05ef: Download complete
a2b008488679: Download complete
d03ca78f31fe: Waiting
d6799cf0ce70: Waiting
ダウンロードが完了すると以下のコマンドで確認できます。
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 058f4935d1cb 9 days ago 152MB
無事ダウンロードできた nginx のイメージに対して、さくらのクラウド、コンテナレジストリ用にタグ付けを行います。
% docker tag nginx:latest kameoncloudblog.sakuracr.jp/nginx:latest
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 058f4935d1cb 9 days ago 152MB
kameoncloudblog.sakuracr.jp/nginx latest 058f4935d1cb 9 days ago 152MB
IMAGE ID が同じことから、この2つはタグ付けによって名前が変わっただけの同一イメージであることがわかります。この新しくタグ付けされたイメージをさくらのクラウド、コンテナレジストリにアップロードします。まずログインを行います。
% docker login kameoncloudblog.sakuracr.jp
Username: kameda
Password:
Login Succeeded
次に先ほどタグ付けを行ったコンテナイメージをPush(アップロード)します。
% docker push kameoncloudblog.sakuracr.jp/nginx:latest
The push refers to repository [kameoncloudblog.sakuracr.jp/nginx]
396214f7f8fc: Pushed
b1484d87e77a: Pushed
df20eaef6952: Pushed
f2ddb60a28da: Pushed
83eccd85c69c: Pushed
47eeda941886: Pushed
6a7f953ae30c: Pushed
latest: digest: sha256:2d9adb6550941918f975fecd2314dd8fac49bc386c05eab7e6db08c334f9a185 size: 1778
3. AppRun の起動
ではいよいよ、AppRunでコンテナを起動します。
さくらのクラウド ホーム画面にて AppRun 共用型 をクリックします。 プライベートネットワークでコンテナを起動可能な AppRun 専有型 は次回の記事で紹介させていただく予定です。
アプリケーションを作成 をクリックします。
AppRunはロードバランサ内蔵型であり、待ち受けポート、オートスケール条件、最小&最大コンテナ数を指定できます。最小は0 とした場合、待機状態ではポートを待ち受けるコンテナが存在しないため最もコスト効率がよくなりますが、起動中コンテナが 0 の状態でリクエストが来ると新規にコンテナを起動させる コールドスタート が発生します。遅延時間はコンテナイメージに依存するため一概には言えませんが、動作検証を行った後最小数を決める必要があります。
先ほどコンテナレジストリにアップロードしたイメージのURLを入力し、割り当てるvCPU と メモリサイズを選択します。
その他はデフォルトのままで問題ありませんので 作成する をクリックします。
しばらく待つとサービスが起動します。
公開URL にアクセスすると無事nginxが起動していることがわかります。
次回ご紹介するAppRun専有型とは異なり、共用型では公開URLで自動生成されたドメイン名を、独自ドメインに変更する機能は記事作成時点では提供されていませんので注意してください。
まとめ&次回予告
AppRun共用型でシンプルにコンテナを起動する手順をまとめました。
次回の記事ではより細かいオプションが指定可能かつ、プライベート環境での起動もサポートするAppRun専有型を紹介します。