SQL Server エンジニア のための
コンテナ入門
2019年09月25日
NEC Solution Innovators, Ltd.
太田 智行
太田 智行
Walkmanと同い年
データベース技術ひと筋
SQL Server エンジニアのためのコンテナ入門
SQL on Linux のアーキテクチャ
Linux向けにポーティングされたものではない
“SQLPAL”により長年稼働してきたWindowsコードを共有
SQL Platform Abstraction Layer
(SQLPAL)
RDBMS SSIS SSAS SSRS
Windows Linux
Windows Host Ext.
Linux Host
Extension
SQL Platform Abstraction Layer
(SQLPAL)
Host extension mapping to OS system calls
(IO, Memory, CPU scheduling)
Win32-like APIsSQL OS API
SQL OS v2
All other systems
System resource & latency
sensitive code paths
on Linux
on Container
on Kubernetes
Popular and Commonly Used
Portable, Lightweight, Immutable, Efficient
Orchestration, Scalable, Self Healing
SQL Server エンジニアのためのコンテナ入門
lib
app
lib
app
lib
app
lib
app
lib
app
アプリを
動かしたい
ライブラリ
入手
サーバ(OS)
構築
HW
調達
課題
• HWパワーが足りなければイチカラ組みなおし。逆にHWが暇でも部分返品不可。
• 対応OSが異なるアプリを動かしたければ別途HW調達から必要。
課題解決:HW仮想化により都度のHW調達を削減
• 仮想マシンに割りあてるHWパワーを増減可能
• 必要OSが異なるなら別途仮想サーバーをたてればよい(HW調達不要)
• OSレベルの可搬性が生まれた(新しい仮想基盤への引っ越しが可能)
HW削減
lib
app
lib
app
lib
app
lib
app
lib
app
アプリを
動かしたい
ライブラリ
入手
サーバ(OS)
構築
HW
調達
さらなる課題
• 仮想サーバ内部の負荷凸凹をもっと最適化できないものか(仮想サーバを減らしOS
分のオーバーヘッドをカットしたい)
• HW調達の問題は根本解決に至っていない(仮想基盤HWのパワー不足、パワー余剰)
アプリを
動かしたい
ライブラリ
入手
サーバ(OS)
構築
HW
調達
HW削減
lib
app app app
lib lib
app
lib
app
lib
課題解決:アプリに可搬性を持たせ集積度を高めることでサーバを削減
• OSを含まないので可搬性が高く起動も早い≒必要な時に”どこかのリソース”を
使って稼働させるという考え方
• サーバ(OS)削減&HW削減、OSへのパッチ当てなどサーバ運用コスト削減
アプリを
動かしたい
ライブラリ
入手
サーバ(OS)
構築
HW
調達
HW削減
app
lib
app
lib
app
liblib
app app
lib
← サーバ(OS)削減(4->2)
lib
app
lib
app
lib
app
lib
app
lib
app
HW削減
lib
app app app
lib lib
app
lib
app
lib
HW削減
app
lib
app
lib
app
liblib
app app
lib
← サーバ(OS)削減(4->2)
リ
ソ
ー
ス
利
用
効
率
向
上
仮想化を選択するケース例
• 独立性が高い(OSを共有するコンテナに比較し有事他者影響が小さい)
• OSが選択可能(コンテナはOSに依存するため例えばWindows用に構成された
コンテナを稼働させるにはWindowsが必要)
HW削減
lib
app app
lib
app
lib
app
lib
app
lib
HW削減
app
lib
app
lib
app
liblib
app app
lib
← サーバ(OS)削減(4->2)
Edition
無償 Docker Engine – Community
(旧称:Docker Community Edition)
有償
Docker Engine – Enterprise
(旧称:Docker Enterprise - Basic)
Docker Enterprise
(旧称:Docker Enterprise - Standard、Docker Enterprise - Advanced )Overview of Docker editions
コンテナランタイムの動向
 2013年:Docker誕生(dotCloud社(現Docker社)がOSS公開)
 2014年:Everything at Google runs in a container
 2015年:コンテナ標準化団体 Open Container Initiative 誕生
 2017年:OCI Runtime Specification と OCI Image Format 誕生
 独自のコンテナランタイムが開発可能
 2017年:Container Runtime Interface(kubeletとコンテナランタイム間のI/F仕様)誕生
 独自のコンテナランタイムをKubernetesに組み込みやすくなった
入手
無償
Linux
リポジトリもしくはパッケージ
からインストール
Windows
Docker Desktop
for Windows
Mac
Docker Desktop
for Mac
有償
Linux
リポジトリもしくはパッケージ
からインストール
Windows
OneGet PowerShell Module
を使用してインストール
Docker
レジストリ
コンテナ
イメージ
Dockerfile
Docker
コンテナ
(停止)
pull
build
rmi
rm
run
start
exec
docker ... 解説
build コンテナイメージ作成
pull コンテナイメージ取得
run コンテナ作成&起動
stop コンテナ停止
start コンテナ起動
exec
指定したコマンドを
コンテナOS上で実行
rm コンテナ破棄
commit コンテナのイメージ化
push コンテナイメージ配信
rmi コンテナイメージ破棄
commitコンテナ
イメージ
V2
push
rm -f
Docker
コンテナ
(起動)
Docker
コンテナ
(破棄)
コンテナ
イメージ
破棄
stop
※ docker-composeユーティリティで
コンテナ群の一括制御も可能
マイクロソフト社公式のSQL
Serverコンテナイメージ
Developer Express
マイクロソフト社は独自のDockerレジストリMicrosoft Container Registry(MCR)を構築し、
現在 SQL Server もMCRから入手する(Docker Hubでも 引き続き最新のリストを検索可能)。
2019-RC1
SQL Server用の環境変数
SQL Server エンジニアのためのコンテナ入門
SQL Server Container 作成&起動
命令(一部) 解説
COPY 指定したソースから、指定した対象のコンテナーにファイルがコピーされます。
CMD コンテナーの既定の実行可能ファイルが指定されます。 各 Dockerfile には、CMD 命令が
1 つのみ存在します。
ENV コンテナー内の環境変数の値が設定されます。
EXPOSE コンテナーが特定の TCP ポートまたは UDP ポートでリッスンすることが Docker に通知
されます。
RUN 現在のイメージの新しいレイヤーでコマンドが実行され、結果が新しいイメージにコ
ミットされます。
WORKDIR CMD、RUN、およびコマンドを実行するその他の命令のコンテナー内に作業ディレクト
リが設定されます。
% sudo docker history mcr.microsoft.com/mssql/server:2019-RC1 --no-trunc --format '{{ json .CreatedBy }}'
FROM <OS base image> 例:ubuntu:16.04
LABEL < Microsoft label info > 例:vendor="Microsoft"
EXPOSE 1433 コンテナ内のSQL Serverがリッスンするポート
COPY < SQL Server bin and lib > /opt/mssql/bin、/opt/mssql/lib
RUN ./install.sh 依存パッケージやツールのインストール
CMD ["/opt/mssql/bin/sqlservr”] SQL Serverの起動
SQL Server カスタム Dockerfile 例
Sample1
FROM mcr.microsoft.com/mssql/server:2017-CU16
COPY ./DevDB.bak /tmp/DevDB.bak
CMD ["/opt/mssql/bin/sqlservr"]
Sample2
FROM mcr.microsoft.com/mssql/server:2017-CU16
COPY . /
RUN chmod +x /db-init.sh
RUN chmod +x /entrypoint.sh
CMD /bin/bash ./entrypoint.sh
sleep 15s
/opt/mssql-tools/bin/sqlcmd –i ddl.sql
/db-init.sh & /opt/mssql/bin/sqlservr
CREATE DATABASE mydb
GO
CREATE TABLE mytable (….
GO
….
db-init.sh
entrypoint.sh
ddl.sql
ローカル プライベート レジストリ
% sudo docker run -d -p 5000:5000 --name localregistry
-v ~/dockerreg:/var/lib/registry registry:latest
https://hub.docker.com/_/registry/
https://github.com/docker/distribution/blob/master/LICENSE
Apache License 2.0
Azure Container Registry
https://docs.microsoft.com/ja-jp/learn/modules/build-and-
store-container-images/1-intro-to-azure-container-registry
https://docs.microsoft.com/ja-jp/azure/container-registry/?WT.mc_id=AZ-MVP-5002980
Azure Container Instances
https://docs.microsoft.com/ja-jp/azure/container-instances/?WT.mc_id=AZ-MVP-5002980
SQL Server エンジニアのためのコンテナ入門
Non-Root SQL Server 2019 Containers (preview)
% docker build -t 2019-latest-non-root
https://aka.ms/mssql2019-non-root
% docker run -e "ACCEPT_EULA=Y" -e
"SA_PASSWORD=MyStrongP@ssword" --name sql1 -p
1433:1433 -d 2019-latest-non-root
% docker exec -it sql1 bash
% whoami
SQL Server エンジニアのためのコンテナ入門
課題解決:アプリに可搬性を持たせることで集積度を高めるサーバを削減
• OSを含まないので可搬性が高く起動も早い≒必要な時に”どこかのリソース”を
使って稼働させる
• OS稼働分のHWリソース削減、OSへのパッチ当てなどサーバ運用コスト削減
アプリを
動かしたい
ライブラリ
入手
サーバ(OS)
構築
HW
調達
HW削減
app
lib
app
lib
app
liblib
app app
lib
← サーバ(OS)削減(4->2)
さらなる課題
• “どこかのリソース(最適なアプリの起動場所)”の判断、アプリ起動・停止、アプリ監視・
リカバリを瞬時に行うことは困難。
• 未だにHW調達の問題は根本解決に至っていない(コンテナ基盤HWのパワー不足、パワー余剰)。
アプリを
動かしたい
ライブラリ
入手
サーバ(OS)
構築
HW
調達
HW削減
app
lib
app
lib
app
liblib
app app
lib
app
liblib
app app
lib
YAML形式で記述した宣言コード
機能 概説
スケジューリング
とサービスディスカバリー
コンテナアプリケーション(Pod)の要件やその配置
先となるノードの状態を踏まえて最適なリソース配置
を動的に行う。
またその所在を管理・提供する。
セルフヒーリング プロセス監視やヘルスチェックを行い、異常を検知し
た際は宣言コードで定義されたシステムの形を維持す
るよう自己修復を行う。
スケーリング 負荷に応じてシステムに必要なPod数(≒処理パ
ワー)の自動調整を行う(自動スケールアップ機能は
アルファ段階)。
ロードバランシング 分散配置されたコンテナアプリケーションのロードバ
ランスに対応したエンドポイントを提供する(Podス
ケールにも対応)
K8s内部構造
kubectl
API server
replication, namespace,
serviceaccounts, etc.
Controller
manager scheduler
KVS(etcd)
Master
Node(Worker)
kubelet kube-proxy
Docker
Pod Pod
Containers Containers
Node(Worker)
Docker
Pod Pod
Internet
kubelet kube-proxy
Containers Containers
概説
Master クラスタの司令塔となるノード
API Server K8sを管理するためのREST API
Scheduler Podのスケジューリングを制御
Contoller
Manager
クラスタのセルフヒーリングを
制御
KVS(etcd) クラスターに関わる情報を格納
Node Podを動作させるワーカーノード
Pod
スケジューリングの最小単位と
なるコンテナアプリケーション
Pod内には1つ以上のコンテナが
定義可能
kubelet
API serverを通じてMasterと通信
しNode内を制御
kube-proxy 通信制御
Managed Kubernetes Service
Amazon Elastic
Kubernetes Service
Google
Kubernetes Engine
Microsoft Azure
Kubernetes Service
⇒ on Google Cloud Platform
⇒ on Microsoft Azure Platform
⇒ on Amazon Web Services Platform
Kubernetes the hard way
Kubernetes 開発貢献 Top10
https://k8s.devstats.cncf.io/d/9/companies-table?orgId=1&var-period_name=Last%20year&var-metric=contributions
Persistent Volume
User
Node
Pod
SQL Server
Node
Load Balance
Service
Node
Pod
SQL Server
Pod
SQL Server
SQL Server エンジニアのためのコンテナ入門
⇒ サポートされている
Persistent Volumeの
一覧
AG
Pod
Operator
Pod
Load balancer
Pod
SQL Server
primary
AG agent
Pod
Load balancer
Pod
SQL Server
secondary
AG agent
Pod
SQL Server
secondary
AG agent
SQL Server
primary
SQL Server
secondary
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門
Data Virtualization
ODBC NoSQL RDBMS Big Data
重複するストレージコスト
データパイプラインの構築と維持
データコピーに伴う鮮度劣化
セキュリティリスクの増大
ETL時のデータ品質問題の組み込み
ガバナンス制御の複雑化
Data
Virtualization
Big Data Cluster
2016 2025
16 ZBs 163 ZBs
of data was generated of data will generated
*IDC White Paper, Data Age 2025: The Evolution of Data to Life-Critical
Model
& serve
Store
Storage Pool
(HDFS)
Data Pool(Scale-out
SQL Data Mart)
Ingest
SQL Server
Integration
Services
Prep
& train
SQL Server
ML Services
Master
instance
Master instance
(SQL Server)
REST API
containers
for models
Big Data Cluster
パッケージングされたAIプラットフォーム
パッケージングされた構築済みAIプラットフォーム
SQL Server エンジニアのためのコンテナ入門
on Linux
on Container
on Kubernetes
Popular and Commonly Used
Portable, Lightweight, Immutable, Efficient
Orchestration, Scalable, Self Healing
SQL Server runs anywhere !
3rd party
Cloud
SQL Database
Managed Instance
SQL
Database
Kubernetes
Service
SQL Server
on Azure VM
SQL Server
Database
Migration Service
SQL Data
Warehouse
3rd
On-Premises
Cloud
OpenShiftKubernetesContainerLinuxWindows
1.Docker(エンジン、管理クライアント)をインストール
2.% sudo docker run -e "ACCEPT_EULA=Y" -e
"SA_PASSWORD=P@ssword" --name sql19 -p 11433:1433 -d
mcr.microsoft.com/mssql/server:2019-latest
3.sudo docker exec sql19 /opt/mssql-tools/bin/sqlcmd -S
localhost -U sa -P P@ssword -Q “SELECT ‘Hello SQL Server
Container!’”

More Related Content

PPT
Glibc malloc internal
PDF
ゼロからはじめるKVM超入門
PDF
フラグを愛でる
PPTX
PHP AST 徹底解説
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
PDF
Linux女子部 systemd徹底入門
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
ファイルシステム比較
Glibc malloc internal
ゼロからはじめるKVM超入門
フラグを愛でる
PHP AST 徹底解説
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
Linux女子部 systemd徹底入門
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
ファイルシステム比較

What's hot (20)

PDF
Linux女子部 iptables復習編
PPTX
Elasticsearch as a Distributed System
ODP
自宅サーバ仮想化
PDF
CXL_説明_公開用.pdf
PDF
Docker入門 - 基礎編 いまから始めるDocker管理
PDF
Node-REDをIoTビジネスに適用するために苦労した3つの話
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PPTX
Dockerからcontainerdへの移行
PDF
不揮発メモリ(NVDIMM)とLinuxの対応動向について
PDF
Mavenの真実とウソ
PDF
Node-REDのノード開発容易化ツール Node generator
PPTX
Linuxのsemaphoreとmutexを見る 
PDF
BuildKitの概要と最近の機能
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
PDF
Ethernetの受信処理
PDF
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
PDF
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
PDF
Fiberの使いどころ
PDF
Zynq mp勉強会資料
Linux女子部 iptables復習編
Elasticsearch as a Distributed System
自宅サーバ仮想化
CXL_説明_公開用.pdf
Docker入門 - 基礎編 いまから始めるDocker管理
Node-REDをIoTビジネスに適用するために苦労した3つの話
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
Dockerからcontainerdへの移行
不揮発メモリ(NVDIMM)とLinuxの対応動向について
Mavenの真実とウソ
Node-REDのノード開発容易化ツール Node generator
Linuxのsemaphoreとmutexを見る 
BuildKitの概要と最近の機能
ソーシャルゲーム案件におけるDB分割のPHP実装
Ethernetの受信処理
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
Fiberの使いどころ
Zynq mp勉強会資料
Ad

Similar to SQL Server エンジニアのためのコンテナ入門 (20)

PDF
SQL Server コンテナ入門(Docker編)
PDF
SQL Server エンジニア のための コンテナ入門(k8s編)
PDF
SQL Server コンテナ入門(Kubernetes編)
PDF
[デブサミ]Microsoft Data Platform 最新アップデート
PPTX
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
PDF
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
PDF
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
PPTX
ついに上陸!PaaS 最新兵器のご紹介
PDF
Start SQL Server with Docker
PDF
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
PDF
Managed Instance チートシート
PDF
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
PDF
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
PDF
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
PPTX
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
PDF
Windows Server Container and Windows Subsystem for Linux
PDF
Windows Server 2019 で Container を使ってみる
PDF
2015-01-27 Introduction to Docker
PDF
Docker for Windows & Web Apps for Containers 実践活用技法
PPTX
Java on Microsoft Azure
SQL Server コンテナ入門(Docker編)
SQL Server エンジニア のための コンテナ入門(k8s編)
SQL Server コンテナ入門(Kubernetes編)
[デブサミ]Microsoft Data Platform 最新アップデート
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
ついに上陸!PaaS 最新兵器のご紹介
Start SQL Server with Docker
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
Managed Instance チートシート
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Windows Server Container and Windows Subsystem for Linux
Windows Server 2019 で Container を使ってみる
2015-01-27 Introduction to Docker
Docker for Windows & Web Apps for Containers 実践活用技法
Java on Microsoft Azure
Ad

More from Insight Technology, Inc. (20)

PDF
グラフデータベースは如何に自然言語を理解するか?
PDF
Docker and the Oracle Database
PDF
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
PDF
事例を通じて機械学習とは何かを説明する
PDF
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
PDF
MBAAで覚えるDBREの大事なおしごと
PDF
グラフデータベースは如何に自然言語を理解するか?
PDF
DBREから始めるデータベースプラットフォーム
PDF
Lunch & Learn, AWS NoSQL Services
PDF
db tech showcase2019オープニングセッション @ 森田 俊哉
PDF
db tech showcase2019 オープニングセッション @ 石川 雅也
PDF
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
PPTX
難しいアプリケーション移行、手軽に試してみませんか?
PPTX
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
PPTX
そのデータベース、クラウドで使ってみませんか?
PPTX
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
PDF
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
PPTX
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
PPTX
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
PPTX
エンタープライズでのAI活用を支援する新世代データウェアハウスのあり方[ATTUNITY & インサイトテクノロジー IoT / Big Data フォー...
グラフデータベースは如何に自然言語を理解するか?
Docker and the Oracle Database
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
事例を通じて機械学習とは何かを説明する
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
MBAAで覚えるDBREの大事なおしごと
グラフデータベースは如何に自然言語を理解するか?
DBREから始めるデータベースプラットフォーム
Lunch & Learn, AWS NoSQL Services
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
難しいアプリケーション移行、手軽に試してみませんか?
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
そのデータベース、クラウドで使ってみませんか?
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
エンタープライズでのAI活用を支援する新世代データウェアハウスのあり方[ATTUNITY & インサイトテクノロジー IoT / Big Data フォー...

SQL Server エンジニアのためのコンテナ入門