Docker に SQL Server Machine Learning Services (Python と R) をインストールする

適用対象: SQL Server 2019 (15.x) - Linux

この記事では、Docker に SQL Server Machine Learning Services をインストールする方法について説明します。 Machine Learning Services を使用して、データベース内で Python または R スクリプトを実行できます。 Machine Learning Services には、事前に構築されたコンテナーは用意されていません。 GitHub で入手できるテンプレートの例使用して、SQL Server コンテナーから作成できます。

前提条件

  • Git のコマンド ライン インターフェイス。

  • サポートされている Linux ディストリビューションの Docker エンジン 1.8 以降。 詳細については、「Get Docker」を参照してください。 コンテナー内の SQL Server を運用環境の Windows または macOS で使用することはサポートされていません。

  • SQL Server on Linux のシステム要件」も参照してください。

mssql-docker リポジトリをクローンする

次のコマンドによって mssql-docker git リポジトリがローカル ディレクトリにクローンされます。

  1. Linux または Mac で Bash ターミナルを開きます。

  2. mssql-docker リポジトリのローカル コピーを保持するディレクトリを作成します。

  3. git clone コマンドを実行して、mssql-docker リポジトリを複製します。

    git clone https://github.com/microsoft/mssql-docker mssql-docker
    

SQL Server の Linux コンテナー イメージをビルドする

次の手順で Docker イメージをビルドします。

  1. ディレクトリを mssql-mlservices ディレクトリに変更します。

    /mssql-docker/linux/preview/examples/mssql-mlservices
    
  2. 同じディレクトリで、次のコマンドを実行します。

    docker build -t mssql-server-mlservices .
    
  3. 次のコマンドを実行します。

    重要

    SA_PASSWORD 環境変数は非推奨です。 代わりに MSSQL_SA_PASSWORD を使用してください

    docker run -d -e MSSQL_PID=Developer -e ACCEPT_EULA=Y -e ACCEPT_EULA_ML=Y -e MSSQL_SA_PASSWORD=<password> -v <directory on the host OS>:/var/opt/mssql -p 1433:1433 mssql-server-mlservices
    

    注意

    MSSQL_PID の値には、次の値のいずれかを使用できます:Developer (無料)、Express (無料)、Enteprise (有料)、Standard (有料)。 有料エディションを使用している場合は、ライセンスを購入していることを確認してください。 (パスワード) は、実際のパスワードで置き換えてください。 -v を使用したボリューム マウントはオプションです。 (ホスト OS 上のディレクトリ) は、データベース データとログ ファイルをマウントする実際のディレクトリに置き換えてください。

  4. 次のコマンドを実行して確認します。

    docker ps -a
    

    注意

    Docker イメージをビルドするには、サイズが数 GB のパッケージをいくつかインストールする必要があります。 このスクリプトは、ネットワークの帯域幅によっては完了までに時間がかかることがあります。

SQL Server Linux コンテナー イメージを実行する

  1. コンテナーを実行する前に環境変数を設定します。 PATH_TO_MSSQL 環境変数をホスト ディレクトリに設定します。

    export MSSQL_PID='Developer'
    export ACCEPT_EULA='Y'
    export ACCEPT_EULA_ML='Y'
    export PATH_TO_MSSQL='/home/mssql/'
    

    Note

    SQL Server の実稼働エディションをコンテナーで実行するプロセスは、若干異なります。 詳細については、「Docker で SQL Server コンテナーイメージを構成する」を参照してください。 同じコンテナー名とポートを使う場合でも、このチュートリアルの残りの部分を引き続き実稼働のコンテナーに適用できます。

  2. コンテナーを表示するには、docker ps コマンドを実行します。

    sudo docker ps -a
    
  3. [STATUS] 列に表示されている状態が [Up] の場合、SQL Server はコンテナーで実行されており、[PORTS] 列で指定されているポートでリッスンしています。 SQL Server コンテナーの [STATUS] 列に [Exited] と表示されている場合は、構成ガイドのトラブルシューティングのセクションを参照してください。

    出力:

    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
    941e1bdf8e1d        mcr.microsoft.com/mssql/server/mssql-server-linux   "/bin/sh -c /opt/m..."   About an hour ago   Up About an hour     0.0.0.0:1401->1433/tcp   sql1
    

Machine Learning Services を有効にする

Machine Learning Services を有効にするには、SQL Server インスタンスに接続し、次の T-SQL ステートメントを実行します。

EXEC sp_configure  'external scripts enabled', 1;
RECONFIGURE WITH OVERRIDE

Python 開発者は、次のチュートリアルに従って、SQL Server で Python を使用する方法を学習できます。

R 開発者はいくつかの簡単な例を試して、SQL Server での R の動作方法の基本を確認できます。 次の手順については、以下のリンクを参照してください。