SE の雑記

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

SQL Server 2017 のコンテナーサポートについてのメモ

leave a comment

SQL Server 2017 では、コンテナーをサポートするようになっており、コンテナーのイメージについては Docker Hub で公開されています。

Microsoft が公開しているリポジトリとしては次のものになる感じですかね。

Linux ベースの Docker コンテナーと Windows ベースのコンテナーの両方のイメージが公開されています。

インストールの方法は Run the SQL Server 2017 container image with Docker に記載されています。
ドキュメントに記載されているコマンドで実行すれば問題ないと思いますが、現時点で意識しておきたいポイントとしては mssql-server-linux については「latest」タグのイメージが存在していないため、イメージをプルするときのタグは明示的に指定する必要があります。

これについては、Missing `latest` tag on Docker Hub. Broken build #166 で、議論が行われています。

SQL Server 2017 では、モダンサービスモデルということでリリース後の 12 ヶ月については月次で Cumulative Update がリリースされる予定となっています。また、現状のリポジトリの名称的には新しいメジャーバージョンの SQL Server がリリースされた場合には、おそらく現在のリポジトリが使用されるのではないでしょうか。

そのため、「latest」のタグは用意しておらず「<メジャーバージョン>-<マイナーバージョン>」「<メジャーバージョン>-latest」の 2 種類の形式での管理を実施している形になるのでは。
この議論についての Issue はオープン状態ですので、議論の結果 latest タグが採用されるかもしれませんが、現時点では明示的にタグを指定する必要があるのが注意点かと。
(投稿を書いている時点の Linux のイメージの Docker Pull Command の記載内容だと latest タグを見に行ってしまって、プルできないのがちょっと気になりますが。)

ざっと見た感じ Windows 版についてはインストールドキュメントが見当たらなかったのですが、基本は Linux 版と同様で、イメージ名だけを変えれば問題ありません。
Windows のコンテナーについては Windows 10 / Windows Servr 2016 のコンテナーテクノロジー上で動作させることになりますので docker run コマンドで「—isolation hyperv」で Hyper-V コンテナー化できるのが特徴ですね。
2017/10/4 時点では mssql-server-windows は SQL Server 2017 RC1 のイメージとなっていましたので、投稿公開時点では、RTM 版を使用する場合には、mssql-server-windows-express / mssql-server-windows-developer のどちらかを使用した方がよいかと思います。この 2 つについては RTM 版のイメージです。
(使用する前に、Docker Hub のタグの情報やイメージの追加日時を確認した方がよさそうですねというアドバイスをいただき、Windows の場合イメージのサイズが大きいので確かにそうだな~と思いました)
ちなみに、Windows 版については latest タグでイメージが登録されており、Linux 版との統一感でもやもやが残ったりもします。

コンテナー版の SQL Server、すぐにデプロイできて、環境をさくっと作りたい場合には便利なのですが、注意する点が一つあります。
Linux 版のイメージに次のような記載が行われています。

License

SQL Server Developer edition lets developers build any kind of application on top of SQL Server. It includes all the functionality of Enterprise edition, but is licensed for use as a development and test system, not as a production server. SQL Server Developer Edition cannot be used in a production environment.

I have read and agree to the SQL Server 2017 Developer Edition license terms located here.

コンテナーのイメージですが単純に docker run すると、「Developer Edition」でインストールされるということです。
Developer Edition は、開発用途限定で利用可能なエディションとなっていますので、このイメージを本番環境で利用することはできません。

それでは、コンテナーイメージはそもそも本番環境で使えないのかというとそういうことはありません。
Docker Store の方でも、SQL Server on Linux のイメージは Microsoft SQL Server として追加されています。
この利用規約には次のような記載があります。

You may only use SQL Server in a production environment if you have a valid license to do so. You may obtain a free SQL Server Express production license here. SQL Server Standard and Enterprise Edition licenses are available through Microsoft Volume Licensing.

I agree that I have a valid and existing license for the edition and version of SQL Server that I intend to use. I also agree that my use of SQL Server software running in a Docker container image will be governed by the terms of my SQL Server license.

使用する SQL Server のエディションのライセンスを保有していることに同意したうえで使用することになっていますので、ライセンスを保有していれば、本番環境で使用可能なエディションでインストールすることが可能です。
Configure SQL Server 2017 container images on Docker に記載されていますが、docker run する際には「-e "MSSQL_PID=Developer"」というようなオプションを指定することができ、プロダクト ID を指定できますので、VLSC 等’から On Linux のプロダクトキーを入手して指定することで Standard / Enterprise エディションを使用することが可能となっています。
Express を指定すれば Express Edition で利用することも可能ですので、本番環境で利用する場合は Express または、プロダクトキー指定で Docker のイメージを起動することになるのではないでしょうか。
ちなみに、Windows と Linux の SQL Server のプロダクトキー共通では無いようで、Linux 版のキーを入手する必要があるようですが、私は MSDN メディアしかもっていないため、実際にプロダクトキーを使用したインストールは試していません。

ちなみに、コンテナー版の本番利用ですがライセンスについても考慮が必要となります。
https://www.microsoft.com/ja-jp/sql-server/sql-server-2017-pricing のライセンスデータシートにコンテナー版のライセンスについても書かれているのですが、ぱっと見は仮想マシンで実行する場合と同じ内容に見受けられましたが、ライセンスについては利用される方が個々できちんと確認していただければと思います。

Windows 版のイメージについては、Windows 版のインストール方法の仕組み上、エディション別のイメージとなっているようなのですが、こちらで、Standard 等を使う場合はどうするんでしょうね?
自前でイメージ作ってライセンス管理するのでしょうか?

Written by masayuki.ozawa

10月 5th, 2017 at 8:57 am

Leave a Reply

*