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

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

この記事では、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やmacOSでBash端末を開いてみてください。

  2. ローカル mssql-docker リポジトリを作成したいディレクトリに変更してください。

  3. Gitクローンコマンドを実行して mssql-docker リポジトリをクローンしてください:

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

SQL Server Linuxコンテナイメージを構築・実行

Dockerイメージを構築し実行するために、以下の手順を踏みます:

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

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

    docker build -t mssql-server-mlservices .
    

    Note

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

  3. コンテナーを実行します。

    Important

    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
    

    Note

    サポートされている値は、MSSQL_PIDに使用できます。 有料エディションを使用する場合は、ライセンスを購入していることを確認します。 <password> を実際のパスワードに置き換えます。 -v を使用したボリュームマウントはオプションです。 <directory on the host OS> を、データベース データファイルとログ ファイルをマウントする実際のディレクトリに置き換えます。

SQL Server Linuxコンテナの確認

docker ps -a

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

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

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

    Output:

    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サービスを有効にするには、SQL Serverインスタンスに接続し、以下の Transact-SQL 文を実行します。

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