SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Docker で SQL Server vNext を実行してみる

leave a comment

今まで、SQL Server の Express Edition であれば、Windows Container で実行することができていました。
SQL Server 2016 Express Edition in Windows containers

SQL Server vNext になると、Linux / Windows / Mac の Docker でも動作するようになりました。
Run the SQL Server Docker image on Linux, Mac, or Windows

Ubuntu と Windows のコンテナーとして実行してみたいと思います。
# Mac はハード持っていないので…。

まず最初に実行環境の整備ですが、Windows 版の場合は、Windows Container の機能を追加すればよいかと。
# 以前、SQL Server Express を実行する際に使ったものをそのまま流用しています。
Windows Containers on Windows Server

Windows 以外については、 Get Docker のドキュメントの内容で Docker をインストールすればよいかと。
今回は、Ubuntu 16.04 を使用していますので、Install Docker on Ubuntu の内容を元にインストールをしています。

Docker の実行環境が整えば、あとはイメージを Pull して実行するだけです。
Windows 用 / Linux 用のイメージが別々に提供されているので、実行プラットフォームに合わせたイメージを取得します。

-- Windows で実行する場合
docker pull microsoft/mssql-server-windows
-- Linux  / Mac で実行する場合
docker pull microsoft/mssql-server-linux

 

これで、イメージが Pull されるので、あとはコンテナーを実行するだけです。

-- Windows (現状、sa_password の環境変数の指定は小文字の必要がありそう)
docker run --name sqlvnext -e 'ACCEPT_EULA=Y' -e 'sa_password=M@sterEr0s' -p 11433:1433 -d microsoft/mssql-server-windows
(docker inspect sqlvnext | ConvertFrom-Json).NetworkSettings.Networks.nat.IPAddress
$ip = docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" sqlvnext
sqlcmd.exe -S $ip -U sa -P "M@sterEr0s" -Q "SELECT @@VERSION"
-- Linux
sudo docker run --name sqlvnext -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=M@sterEr0s' -p 11433:1433 -v /var/opt/mssql-docker:/var/opt/mssql -d microsoft/mssql-server-linux
sqlcmd -S .,11433 -U sa -P "M@sterEr0s" -Q "SELECT @@VERSION"

 

Windows 版の Docker で実行したものがこちらです。

Windows コンテナーで動作させていますので、OS としては Windows Server 2016 で動作しているように見えます。

image

Ubuntu 版の Docker で実行したもの がこちらです。

現時点の Ubuntu の方はベース OS が 15.10 として認識されているようでした。

image

 

Windows 版については Windows Server 2016 の Windows コンテナーで SQL Server 2016 Express を動作させるための情報 でまとめた情報が使えそうです。

Linux 版の場合、-p オプションを使用することで、永続化するディレクトリが指定できるのですが、Windows 版の場合は、SQL Server Express 版と同じで「attach_dbs」が使われていそうな感じでした。

docker inspect の情報を見る限り、Windows 版では、Mount のカテゴリが無くて、attach_dbc の実行時オプションが使用されていそうだったのですよね。

 

Windows 10 の Docker for Windows を使用して実行することも可能です。

Docker for Windows の場合、MobyLinux を仮想マシンとして実行していますので、Linux 版のイメージを PULL する必要があります。

ホスト OS 側でドライブが共有されていれば、Docker からホスト OS のディレクトリに直接マウントし、データベースをホスト配置することも可能です。

docker run --name sqlvnext -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=M@sterEr0s" -p 11433:1433 -v c:/temp/docker:/var/opt/mssql -d microsoft/mssql-server-linux
sqlcmd -S .,11433 -U sa -P "M@sterEr0s" -Q "SELECT @@VERSION"

image

こちらも MobyLinux 上でコンテナーを動作させていいるため、Ubuntu として表示されていますね。

Share

Written by Masayuki.Ozawa

11月 20th, 2016 at 11:01 am

Posted in SQL Server

Tagged with ,

Leave a Reply