Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ASP.NET と Docker そしてクラウドの関係
Search
Tatsuro Shibamura
June 17, 2017
Technology
0
59
ASP.NET と Docker そしてクラウドの関係
Tatsuro Shibamura
June 17, 2017
Tweet
Share
More Decks by Tatsuro Shibamura
See All by Tatsuro Shibamura
Hack Azure! #5 - Geek of Azure Serverless
shibayan
0
67
.NET Conf 2020 Online - .NET 5 リリース記念パーティートーク
shibayan
0
8k
Terraform Provider for Azure に貢献してみた話
shibayan
0
470
Azure Functions と SendGrid の良い関係
shibayan
0
870
Azure Serverless を活用したリアルタイム Web のすべて
shibayan
1
2.5k
祝 東日本リージョン一般提供! Azure Application Insights 基礎と実践
shibayan
1
37k
なかなか楽にならないSSL/TLS証明書の話
shibayan
2
1.4k
.NET Conf 2018 Tokyo
shibayan
1
3.7k
最近の Azure App Service について
shibayan
0
1.1k
Other Decks in Technology
See All in Technology
ルーターでプレゼンする
puhitaku
1
3.4k
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
8
7.1k
TDD - Test Driven Drupal
opdavies
0
3k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
37k
Amplify 🩷 Bedrock 〜生成AI入門〜
minorun365
PRO
10
1.2k
Cypress or Playwright?
rainerhahnekamp
0
180
Secrets of a PowerShell "Guru"
guyrleech
1
110
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
170
R3のコードから見る実践LINQ実装最適化・コンカレントプログラミング実例
neuecc
3
3.7k
Cloudflare WorkersがPythonに対応したので試してみた
miura55
0
150
中年男性がメインフレームから クラウドへキャリアシフトしてみた
uechishingo
1
440
AWS Observability ベストプラクティス 大紹介
o11yfes2023
0
100
Featured
See All Featured
A better future with KSS
kneath
231
16k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
How to Ace a Technical Interview
jacobian
273
22k
YesSQL, Process and Tooling at Scale
rocio
165
13k
Producing Creativity
orderedlist
PRO
338
39k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
How GitHub (no longer) Works
holman
305
140k
Scaling GitHub
holman
457
140k
Designing the Hi-DPI Web
ddemaree
276
33k
The Art of Programming - Codeland 2020
erikaheidi
43
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
Music & Morning Musume
bryan
41
5.6k
Transcript
ASP.NET と Docker そしてクラウドの関係 @shibayan
はじめに • @shibayan • http://blog.shibayan.jp/ • Microsoft MVP for ASP.NET/IIS
ASP.NET について • 二つの ASP.NET が並行して存在中 • ASP.NET (Web Forms
/ MVC / Web API) • ASP.NET Core (MVC)
Docker で実行したい • ASP.NET の場合 • Windows Server Core ベースのイメージを利用
• mono-xsp なイメージを利用(無保証) • ASP.NET Core の場合 • Nano Server ベースのイメージを利用 • Debian ベースのイメージを利用
メリット・デメリット • 既存の ASP.NET アプリケーションの Dockernize が出来る • Docker のメリットを
Windows ベースでも • IIS や必要なパッケージを含んだイメージをそのまま展開 • 実行環境を非常に選ぶのがデメリット • Windows Containers の環境が必要
ASP.NET の場合
ASP.NET Core の場合
イメージタグの選び方 • ASP.NET の場合 • .NET Framework と Server Core
バージョンの組み合わせ • 例: 4.7-windowsservercore-10.0.14393.1358 • ASP.NET Core の場合 • Nano Server か Debian のどちらかを選ぶ • .NET Core のバージョンを選ぶ • 例: 1.1.2-jessie / 1.0.5-nanoserver
実行環境について
Docker が動けば問題なし • パブリッククラウドには大体サービスが存在している • Azure / AWS/ GCP は問題なし
• オンプレの場合は Swarm / Kubernetes など • ローカル環境では Docker for Windows / Mac など • Windows 10 の場合は Hyper-V Containers が
パブリッククラウドで動かす • Azure の場合 • App Service on Linux /
Azure Container Service を使う • AWS の場合 • Elastic Beanstalk / EC2 Container Service を使う • GCP の場合 • App Engine Flexible Environment / Container Engine を使う 全て Linux ベースの環境
Windows は難易度が高い • Windows に対応したサービスが提供されていない • Azure は Kubernetes の
Windows サポートがプレビュー
Server Core の罠 • Windows コンテナーの要件 • Windows Server コンテナーは、ビルド番号が異なると起動をブロッ
クされます (例: 10.0.14300.1030 (Technical Preview 5) と 10.0.14393 (Windows Server 2016 RTM))。 ビルド番号が一致し、リビジョン番 号が異なる場合は、起動をブロックされません (例: 10.0.14393 (Windows Server 2016 RTM) と 10.0.14393.206 (Windows Server 2016 GA))。 ただし、技術的にはブロックされませんが、これは状況 によっては正しく機能しない可能性がある構成であるため、運用環境 ではサポートできません。
まだまだ発展途上の Windows • サービスが提供されていない Windows のコンテナ • Azure が真っ先にサービスを提供するべき •
バージョン管理が難しいイメージ • サイズが大きすぎる Server Core イメージ • ダウンロードサイズ 6GB / 展開後で 11GB • ちなみに Nano Server は 380MB / 1GB ぐらい
OS の選択について
Windows と Linux の選択 • ASP.NET の場合 • 実質的には Windows
の一択しかない • Mono XSP を使った運用は難しい • ASP.NET Core の場合 • 現実的には Linux の方が運用が楽 • 開発は Windows で、実行は Linux という方法もアリ
将来的には Alpine Linux も • .NET Core での Alpine Linux
サポートが予定 • ポーティング中 : https://github.com/dotnet/coreclr/issues/917 • イメージサイズの削減が見込める • ビルド、デプロイの速度向上
実際に行っている例 • 開発環境 : Windows 10 + Visual Studio 2017
• CI/CD : GitHub + CircleCI • 実行環境 : AWS Elastic Beanstalk (Docker)
Visual Studio のサポート
VS2017 で Docker に全力 • Visual Studio は Windows /
Linux の Docker に対応 • ASP.NET プロジェクトに追加 • Server Core を使う Dockerfile が追加 • ASP.NET Core プロジェクトに追加 • Debian ベースのイメージを使う Dockerfile が追加
余談 : Visual Studio からデプロイ • Azure の場合 • Azure
SDK をインストールすると App Service にデプロイ可能 • AWS の場合 • AWS Toolkit for Visual Studio をインストールする • Elastic Beanstalk の Windows Server にデプロイ(Not Docker) • GCP の場合 • Cloud Tools for Visual Studio をインストールする • App Engine Flexible Environment にデプロイ(Docker)