55
Microsoft Azureで実装する Web Service on Docker JAZUG熊本(くまあず)平⽇夜の勉強会#2 2017/08/29

Microsoft azureで実装するwebserviceondocker

  • Upload
    -

  • View
    202

  • Download
    0

Embed Size (px)

Citation preview

Microsoft Azureで実装するWeb Service on Docker

JAZUG熊本(くまあず)平⽇夜の勉強会#22017/08/29

加藤 司•北海道出⾝•クラウドコンサルタント/インテグレータ•Microsoft MVP for Microsoft Azure•コミュニティ活動• JAZUG熊本⽀部(くまあず)•熊本クラウド語ろう会(熊クラ会)

⾃⼰紹介

はじめに

本セッションは8⽉29⽇時点の情報になります。

アップデートにより仕様が変わる可能性がありますので

ご注意ください。

Copyright©2015,JAZUGAllRightsReserved. 4

Docker

•「Docker」(ドッカー)は、Docker社(旧dotCloud)が

開発するオープンソースのコンテナ管理ソフトウェア。

•開発者が簡単にアプリケーションを動かす環境を作るとい

う思想のもとに作られている。

Dockerを使うメリット

•サーバー仮想化と違い、コンテナを利⽤するためオー

バーヘッドが少なく動作が軽い。

•各コンテナは様々なディストリビューションやバー

ジョンを構成できる。

•インフラ環境をコード化することが容易(Dockerfile)

Copyright©2015,JAZUGAllRightsReserved. 7

Container

コンテナを使う理由

開発環境と本番環境との差異をなくす

起動時間の短縮

リソース利⽤の効率化

App Service on Linux

App Service on Linux

•現在提供されているApp ServiceのLinux版

• Linux上でのWebアプリのネイティブな実⾏のサポート

•専⽤App Serivceプランで動作

•Dockerのサポート

Preview

アプリ実⾏⽅法

ランタイムスタックの選択Windows版のWeb Appと同様に使⽤するランタイムを

選択してデプロイが可能

Docker イメージの実⾏Azure Container Registry,Docker Hub,プライベート コンテナー

レジストリからカスタム コンテナーを使⽤可能

ランタイムスタック

必要な設定がされたDocker ImageApp Serviceのドキュメントルートをコンテナから参照

独⾃のランタイムスタックの作成も可能https://github.com/Azure-App-Service

公開されているDockerfileをカスタマイズ

ランタイムスタック

以下の⾔語イメージが提供されているNode.js ( 4.4 , 4.5 , 6.2 , 6.6 , 6.9 , 6.10, 6.11, 8.0, 8.1 )

PHP ( 5.6 , 7.0 )

.Net Core ( 1.0 , 1.1 )

Ruby ( 2.3 )

利⽤できるリージョン

現状提供されているのは以下のリージョンSouth Central US, West US, East US, East US 2,North Central US, Central US, Canada Central,Canada East, Brazil South, North Europe, West Europe,

Southeast Asia, East Asia, Japan West, Japan East,

Australia East, Central India, West India, South India

価格

Windows版とは異なりStandard と Basicのみ

プレビューのため現状は50%割引

Web App on Linux

16

WebApponLinux+

AzureDatabaseforMySQL

WebApponLinux+

AzureDatabaseforPostgreSQL

Web App on Linux

17

デプロイ⽅法

Local Gitへプッシュ

GitHub / Bitbucket と連携

Docker Imageをビルドして差し替える

CIサービスとの連携

Docker Hub

Azure Container Registry

Visual Studio Team Services

Dockerをサポートしている CI SaaS

App Service on LinuxDEMO

現在未対応の機能

認証/承認

VNET統合/ハイブリッド接続

Webジョブ

App Service on Linux注意点

Docker Compose未サポート独⾃のオーケストレーターを採⽤しているため、Docker Composeは未サポート

Data Volumeの追加ができない現状はボリューム追加未対応

Azure Container Registry

Azure Container Registry

•Docker プライベートレジストリ

•WindowsとLinuxのコンテナーイメージを単⼀のレジ

ストリで管理できる

• Azure Active Direcotryによるアクセス管理が可能

Azure Container Instances

Azure Container Instances

•仮想マシン不要のコンテナサービス

•即時起動でき、課⾦は秒単位

•Docker HubやAzure Container Registryからコ

ンテナイメージをプルできる

コマンド (Azure CLI 2.0 )

>az groupcreate--nameRGName --locationeastus

>az containercreate--nameContainerName --imagemicrosoft/helloworld--resource-groupRGName --ip-addresspublic

ポータル

ポータル

ポータル

Azure Container Service

Azure Container Service

•テンプレートを使⽤したDockerクラスターの構成を展開す

るサービス ※マネージドサービスではありません

•選べるオーケストレーターはDocker Swarm、DC/OS、

Kubernetesで、Marathon,Chronosなどの各種ツール・

APIをサポート

Kubernetes

Kubernetes コンポーネント

コンポーネント 役割apiserver kubernetesを操作するAPIの提供controller-manager コンテナの状態・ノード管理などetcd 設定情報の共有とサービス検出を⾏うKVSkubelet 各ノード上のコンテナ作成/削除、ボリューム割り当

てなどkubectl API経由でkubernetesを操作するクライアントツー

ルproxy コンテナのネットワークルーティング・負荷分散scheduler 各ノードにコンテナの割り当てなどを⾏う

ACS上でKubernetes を使うには

#AzureCLI2.0接続#az login

###Kubernetesコマンドラインクライアントのインストール#az acs kubernetes install-cli

###Kubernetesクラスター構成ファイルをダウンロード#az acs kubernetes get-credentials--resource-group=$RESOURCE_GROUP--name=$CLUSTER_NAME

###クラスターノードの確認#kubectl getnodes

###コンテナーの実⾏#kubectl runnginx –imagenginx

###サービスの公開#kubectl exposedeploymentsnginx --port=80--type=LoadBalancer

Azure CLI 2.0の場合

Kubernetes ui

#Kubernetesui 起動#kubectl proxyStartingtoserveon127.0.0.1:8001

起動してブラウザでhttp://localhost:8001

に接続する

DC/OS

DC/OSUI

Copyright©2015,JAZUGAllRightsReserved. 38

MarathonUI

Copyright©2015,JAZUGAllRightsReserved. 39

Docker Swarm

Copyright©2015,JAZUGAllRightsReserved. 41

Windows Server Container

Windows Server コンテナー

•Windows Server コンテナー•プロセスと名前空間の分離テクノロジを使⽤してアプリケーションの分離。ホスト+ホスト上で実⾏されているすべてのコンテナーとカーネルを共有。

•Hyper-V コンテナー•各コンテナーを最適化された仮想マシンで実⾏する。Windows Serverコンテナーと⽐較して分離性が向上。

Windows Server Containerの種類

43

項⽬ Windows Serverコンテナ Hyper-Vコンテナ

特徴 軽量・⾼速 ⾼い隔離性

コンテナ 起動:速い実⾏:ホスト上のプロセス

起動:遅い実⾏:Hyper-Vゲスト上のプロセス

隔離性• コンテナは同じホスト

OS上で実⾏される• 他のコンテナの影響を受

ける可能性がある

• コンテナ単位で隔離されるので独⽴性が⾼い

• 他のコンテナの影響をほぼ受けない

Windows Server Container

44ハイパーバイザー(Hyper-V)

Windows カーネル

Windows Server コンテナ

システムプロセス

アプリプロセス

Windows Server コンテナ

システムプロセス

アプリプロセス

Hyper-V Container

45ハイパーバイザー(Hyper-V)

Hyper-V Isolation

Hyper-V Isolation

Windows カーネル Linux カーネル

Windows Server Linux

システムプロセス

アプリプロセス

システムプロセス

アプリプロセス

Windows Subsystem for Linux (WSL)

46ハイパーバイザー(Hyper-V)

Hyper-V コンテナ Hyper-V コンテナ

WSLWindows カーネル

WSLWindows カーネル

Windows Server Linux

システムプロセス

アプリプロセス

システムプロセス

アプリプロセス

Windows Subsystem for LinuxWindows カーネル

Windows Server コンテナ

システムプロセス

アプリプロセス

Linux コンテナ

システムプロセス

アプリプロセス

Nano Server

Nano Server

軽量なWindows OS

Full

ServerCore

NanoServer

Nano Server

起動時間の圧倒的な速さ

Windows Server コンテナでの起動時間 1秒未満

Hyper-V コンテナでの起動時間 2秒未満

仮想マシンとしての起動時間 3秒未満

Nano Server

Docker HUBでも公開されています

Nano Server

• Insider Previewでサイズ削減版が公開され始めています。•OSイメージだけで350MBと軽量となっているため、今後コンテナでの利⽤が期待できそうです。

まとめ

•複雑な構成でなければAzure Container Instanceや

App Service on LinuxはDocker⽤途には最適

•管理はAzureに、スケーリングはお⼿軽に

•普段使いのツールやサービスと連携できる

まとめ

•Web App on Linuxも簡単にコンテナを展開できるサー

ビスですが、Azure Container Instancesはさらに簡略

化されたコンテナ展開サービスです。

•コマンド1つで展開・削除ができるので是⾮お試しくだ

さい!

ご静聴ありがとうございました!