1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WindowsコンテナDojoトレース③

Posted at

現在IBM 大西彰さんがシリーズで「WindowsコンテナDojo」を開催してくれております。
この記事ではその内容を自身の Windows 環境にてトレースしていきます。

今回は、2022/5/12 に開催された WindowsコンテナDojo:第2回 Windowsコンテナアプリのビルド、公開、デプロイ のトレースです。
主旨:「Windowsコンテナに対応したアプリをVisual Studioでビルドし、コンテナイメージをDocker Hubなどのコンテナレジストリに公開する流れを確認します。公開されているコンテナイメージの名前を利用して、DockerコマンドでWindowsコンテナをデプロイする方法を学びます。さらにアプリを少し更新し、ビルドからデプロイまでの流れを繰り返し、最新版が展開できることを確認します。」
上記リンクにWebinar資料、Webinar動画、コンテナ化推進に関するIBMの取組みご紹介等のドキュメントも添付されています。ぜひご覧ください。

環境については以下を参照。
「仮想マシンの実⾏環境は、Hyper-V以外の環境(Oracle VM VirtualBox, VMware Workstationなど)を
すでにお持ちの場合は、そちらをお使いください。
準備編(前編に続き本編も同様)では、Windows PC上に全ての環境を整えることを想定しています。
Mac OS上にWindows 10/11、Windows Server 2019を揃えて環境を整えられますが、
ホストするデバイスの空きリソース (CPUコア、メモリ、SSDの空き状況)にご注意ください。」
また、WindowsコンテナのホストOSとして以下が対象となるようです。
・Windows Server 2016
・Windows Server 2019
・Windows Server 2022
・Windows 10
・Windows 11

ちなみに私は Windows10 (Intel Core i9-10900K を積んだ2年前の自作PC) を使って参加します。

0.今回の大まかな流れ

  1. Dockerアプリ ビルド
  2. Docker Hub への公開
  3. Docker Hub からデプロイ

1.Docker アプリ ビルド

前回のDojoで作成したソリューション(HelloContainer01.sln)を開きます。

011.png

また、Windows Container を動作させるため、Docker Desktop を「Windows Container」モードにしておく。※Linux Container モードの場合のみ実施
052.png

ここでDebug/Releaseビルドにより実行されるコードが分岐されることを示すため、以下のようなコードを「Default.aspx」の7行目ー13行目に入れます。
032.png

上記、実行されるコードは以下のようにビルド構成によって切り替えることができます。

デバッグビルドによる成果物実行時

以下のように「Debug」を選択して、三角形の濃い緑ボタンをクリック
041.png

リリースビルドによる成果物実行時

以下のように「Release」を選択して、三角形の淡い緑ボタン(デバッグなしで開始;Ctrl+F5)をクリック
042.png
※注) リリースビルドによる成果物は濃い緑ボタンによりデバッグ実行しても動きません。

2.Docker Hub への公開

開いたソリューション上で[ビルド] - [○○○の発行(H)]を選択するか、[ソリューションエクスプローラ] - [発行] を選択。
141.png

次のダイアログでは、「Docker Container Registry」選択 →「Docker Hub」選択 → ocker Hub へのログイン情報を入力 → 実行プロファイル作成完了 まで実施すると、、、
185.png

「公開準備が完了しました。」のメッセージが表示されます。
200.png
ここで後述のイメージPush時に接続失敗とならないように Docker Hub へのアクセスを確認するため、画面中に「リポジトリ」と表示されたリンクをクリックします。

リンクをクリックすると404エラー画面になりますが、画面上の「Sign In」をクリックすると「Unorthorized_client」になります。さらに「Back to homepage」をクリックするとDocker Hub にログインできます。
241.png

また、イメージタグについて私は以下のようにしています。
デフォルトは「ユーザー定義タグ」なのですが、変更し忘れると同じタグのイメージを上書きしてしまうので「公開時にタグを生成」としています。するとイメージPushのタイミングでタイムスタンプをタグとして機械的につけてくれます。
265.png

※タイムスタンプをタグにすると以下のようになります。
271.png

後は「発行」をクリックするだけで、イメージをDocker Hub に Push してくれます。(とても簡単!)
301.jpg

Docker Hub に Push されたイメージ。同じタグになっていますね。
312.png

3.Docker Hub からデプロイ

大西さんの資料では、

docker run --name wcon --rm -it -d -p 8000:80 oniak3/hellowcon01:latest

コマンドにより、Docker Hub から Pull してデプロイまでできていました。一方、私の環境では同様のコマンドを打つと以下のようなエラーになりました。

docker: Error response from daemon: manifest for terumatsu/hellowcontainer01:20220815125842 not found: manifest unknown: manifest unknown.

理由はタグの指定がおかしいとのことです。
Docker Hub に示されたタグと同じにしても状況が変わらないのですが、docker imagesによりイメージを確認すると Pull できているようです。
330.png

ですので、イメージ名を利用してWindows コンテナ をローカルで実行してみます。

docker run --name wcon --rm -it -d 8000:80 terumatsu/hellocontainer01:20220815140448

320.png

ブラウザでlocalhost:8000にアクセスすると、以下のように ASP.NET Release version の実行を確認することができました。
340.png

参照:Speaker Deck資料 Windows コンテナ Dojo 第2回 Windows コンテナアプリのビルド、公開、デプロイ

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?