NOBTAの気ままにITブログ

Azure全般 / SQL Serverに関する情報を発信していきます。


スポンサーリンク

Azure コンテナ レジストリに Dockerfile を使用して SQL Server on Linux コンテナ イメージを作成する方法について


スポンサーリンク

Azure コンテナ レジストリでは、プライベート Docker コンテナー イメージを格納することができ、Azure コンテナ レジストリ サービス階層「Premium」でデプロイすることで、複数のリージョン間で一つのレジストリを管理できたり、Azure プライベート リンクなどを使用し、インターネット網に公開せず、プライベート通信のみでコンテナ イメージにアクセスできるなど、リージョン間を跨ぐ高可用性構成(大規模構成)を意識した構成を組むことが可能になっています。

今回は、Azure コンテナ レジストリに Dockerfile を使用して SQL Server on Linux コンテナ カスタムイメージを作成する方法について紹介したいと思います。

 

 

Azure コンテナ レジストリのデプロイ

1) Azure ポータル から 「コンテナー レジストリ」を選択し、 「コンテナー レジストリ の作成」を選択します。

 

2) 「レジストリ名」、「場所」、「SKU」を選択後、「次へ : ネットワーク」を選択します。

f:id:nobtak:20201207193117p:plain

 

[補足]

SKU : 「Premium」を選択することで、複数のリージョン間で一つのレジストリを管理できたり、Azure プライベート リンクなどを使用し、インターネット網に公開せず、プライベート通信のみでコンテナ イメージにアクセスすることが可能です。

 

Azure コンテナ レジストリのサービス階層毎の詳細な機能については、以下のURLを参照。

 

3) 「接続方法」を選択し、「確認および作成」を選択します。

f:id:nobtak:20201207195125p:plain

 

[補足]

プライベート通信のみでコンテナ イメージにアクセスする必要がある場合は、「プライベート エンドポイント」を選択します。

 

4) 入力した内容を確認後、「作成」を選択し、コンテナ レジストリ を作成します。 

f:id:nobtak:20201207195601p:plain

 

Dockerfile を使用した SQL Server on Linux コンテナ イメージの作成

1) 公開されている SQL Server on Linux コンテナ イメージの中で、 カスタマイズしてAzure コンテナ レジストリに配置したいイメージを選択します。

 

・Redhat 上に SQL Server on Linux がインストールされたコンテナ イメージは、Redhat社にてカタログとして公開されています。

Red Hat Ecosystem Catalog

f:id:nobtak:20201207201114p:plain

 

・Ubuntu 上に SQL Server on Linux がインストールされたコンテナ イメージは、マイクロソフトにて公開されています。

 

 GitHub - microsoft/mssql-docker: Official Microsoft repository for SQL Server in Docker resources

Docker Hub

 

2) Azure ポータル から Azure Cloud Shell を起動します。

f:id:nobtak:20201207230826p:plain

 

3) 「Bash」を選択します。

f:id:nobtak:20201207230945p:plain

 

4) 「code .」コマンドを実行し、エディタを起動します。

f:id:nobtak:20201207231620p:plain

※ 今回は、mkdir コマンドで「docker」ディレクトリを作成していたので、cd コマンドで カレント ディレクトリ パスを 「docker」ディレクトリに移動しています。

 

5) エディタに以下のように入力後、「Dockerfile」という名前で保存し、エディタを閉じます。

 

Dockerfile

FROM mcr.microsoft.com/mssql/server:2019-latest

※  公開されている Ubuntu+最新のSQL Server 2019のコンテナ イメージを使用したい場合、FROM句に 「mcr.microsoft.com/mssql/server:2019-latest」を指定します。

 

f:id:nobtak:20201207234052p:plain

 

f:id:nobtak:20201207232144p:plain

※ カレント ディレクトリに「Dockerfile」というファイルが作成されます。

 

[補足]

Dockerfile の中で、OS パッケージの更新、OS ロケールの変更(日本語化など)、環境変数の設定、作業ディレクトリにスクリプトファイル (.sql ファイル) コピーし、SQL Serverへのスクリプトファイル実行を追記することで、カスタマイズされたコンテナ イメージを作成することも可能。

 

ACCEPT_EULA : エンド ユーザー ライセンス アグリーメント (EULA) の確認

SA_PASSWORD : SA アカウントのパスワード

MSSQL_PID : コンテナで実行される SQL Server on Linux のエディションを指定

(Developer/Express/Standard/Enterprise/EnterpriseCore/<プロダクト ID>)

MSSQL_TCP_PORT :  SQL Server リッスンポート

MSSQL_LCID : ロケールID (言語)

 

Dockerfileのカスタマイズ例

FROM mcr.microsoft.com/mssql/server:2019-latest

RUN apt-get update

ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=P@ssword!
ENV MSSQL_PID=Developer
ENV MSSQL_TCP_PORT=1433

WORKDIR /script

COPY initscript.sql ./initscript.sql

RUN (/opt/mssql/bin/sqlservr --accept-eula & ) | grep -q "Service Broker manager has started" &&  /opt/mssql-tools/bin/sqlcmd -S127.0.0.1 -Usa -PP@ssword! -i initscript.sql

 

Dockerfile の詳細については、以下のURLを参照。

 

6) 「az acr build」コマンドで Dockerfile を使用してコンテナ イメージを作成します。

az acr build --image <レポジトリ名>:<タグ名> --registry <Azure コンテナ レジストリ名> --file Dockerfile

[コマンド例] 

az acr build --image sqlonlinux:v1 --registry arcje01 --file Dockerfile . 

 

まとめ

今回は、Azure コンテナ レジストリに Dockerfile を使用して SQL Server on Linux コンテナ カスタムイメージを作成する方法について紹介してみました。

Azure コンテナ レジストリに コンテナ イメージを格納することで、Azure Kubernetes Service (AKS) や  で簡単にコンテナ イメージを展開することができ、事前にイメージをカスタマイズしておくことで、コンテナ イメージが展開されるまでの時間を短くすることもできるかと思います。

次回は、今回 作成した コンテナ イメージを Azure Kubernetes Service (AKS) に配置する方法について、まとめてみようと思います。

 

 

 

 


スポンサーリンク