クイック スタート:Docker を使用して SQL Server Linux コンテナー イメージを実行する

適用対象: SQL Server (サポートされているすべてのバージョン) - Linux

このクイックスタートでは、Docker を使用して SQL Server 2017 (14.x) Linux コンテナー イメージ mssql-server-linux をプルして実行します。 その後、sqlcmd と接続して最初のデータベースを作成し、クエリを実行できます。

サポートされているプラットフォームの詳細については、「Linux 上の SQL Server 2017 のリリース ノート」を参照してください。

ヒント

このクイック スタートでは、SQL Server 2017 (14.x) のコンテナーを作成します。 異なるバージョンの SQL Server 用に Linux コンテナーを作成する場合は、この記事の SQL Server 2019 (15.x) または SQL Server 2022 (16.x) プレビュー バージョンを参照してください。

このクイックスタートでは、Docker を使用して SQL Server 2019 (15.x) Linux コンテナー イメージ mssql-server-linux をプルして実行します。 その後、sqlcmd と接続して最初のデータベースを作成し、クエリを実行できます。

サポートされているプラットフォームの詳細については、「Linux 上の SQL Server 2019 のリリース ノート」を参照してください。

ヒント

このクイック スタートでは、SQL Server 2019 (15.x) のコンテナーを作成します。 異なるバージョンの SQL Server 用に Linux コンテナーを作成する場合は、この記事の SQL Server 2017 (14.x) または SQL Server 2022 (16.x) プレビュー バージョンを参照してください。

このクイックスタートでは、Docker を使用して SQL Server 2022 (16.x) プレビュー Linux コンテナー イメージ mssql-server-linux をプルして実行します。 その後、sqlcmd と接続して最初のデータベースを作成し、クエリを実行できます。

サポートされているプラットフォームの詳細については、「Linux 上の SQL Server 2022 (16.x) のリリース ノート」を参照してください。

ヒント

このクイック スタートでは、SQL Server 2022 (16.x) プレビューのコンテナーを作成します。 異なるバージョンの SQL Server 用に Linux コンテナーを作成する場合は、この記事の SQL Server 2017 (14.x) または SQL Server 2019 (15.x) バージョンを参照してください。

このイメージは、Ubuntu 20.04 に基づく Linux で実行されている SQL Server で構成されます。 イメージは Linux の Docker エンジン 1.8 以降で使用することができます。

この記事の例では、docker コマンドを使用します。 ただし、これらのコマンドの多くは Podman でも機能します。 Podman には、Docker エンジンに似たコマンド ライン インターフェイスが用意されています。 Podman の詳細については、こちらをご覧ください。

前提条件

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

次の手順を開始する前に、この記事の冒頭で使用するシェル (bashPowerShell、または cmd) を選択していることをご確認ください。

  1. Microsoft Container Registry から SQL Server 2017 (14.x) Linux コンテナー イメージをプルします。

    sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
    
    docker pull mcr.microsoft.com/mssql/server:2017-latest
    
    docker pull mcr.microsoft.com/mssql/server:2017-latest
    

    ヒント

    このクイック スタートでは、SQL Server 2017 (14.x) のコンテナーを作成します。 異なるバージョンの SQL Server 用に Linux コンテナーを作成する場合は、この記事の SQL Server 2019 (15.x) または SQL Server 2022 (16.x) プレビュー バージョンを参照してください。

    上のコマンドにより、最新の SQL Server 2017 (14.x) Linux コンテナー イメージがプルされます。 特定のイメージをプルしたい場合は、mcr.microsoft.com/mssql/server:2017-GA-ubuntu のように、コロンとタグ名を追加します。 利用可能なすべてのイメージを表示するには、mssql-server Docker Hub のページを参照してください。

    この記事の bash コマンドには、sudo が使用されています。 sudo を使用して Docker を実行したくない場合は、docker グループを構成して、そのグループにユーザーを追加できます。 詳細については、「Linux でのインストール後の手順」を参照してください。

  2. Docker で Linux コンテナー イメージを実行する場合は、Bash シェルまたは管理者特権での PowerShell コマンド プロンプトから次のコマンドを使用することができます。

    重要

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

    sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
       -p 1433:1433 --name sql1 --hostname sql1 \
       -d \
       mcr.microsoft.com/mssql/server:2017-latest
    

    Note

    PowerShell Core を使用している場合、二重引用符を一重引用符に置換します。

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 --hostname sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2017-latest
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 --hostname sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2017-latest
    

    パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。従わない場合、コンテナーで SQL Server をセットアップできず、動作が停止します。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 docker logs コマンドを使用してエラー ログを調査することができます。

    既定では、このクイックスタートでは SQL Server Developer Edition のコンテナーが作成されます。 コンテナーで実稼働エディションを実行するためのプロセスは若干異なります。 詳細については、「Run production container images」(実稼働のコンテナー イメージを実行する) を参照してください。

    次の表は、前の docker run の例のパラメーターについて説明しています。

    パラメーター 説明
    -e "ACCEPT_EULA=Y" ACCEPT_EULA 変数を任意の値に設定し、使用許諾契約書の承諾を確定します。 SQL Server イメージの設定が必要です。
    -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" SQL Server のパスワード要件を満たす、8 文字以上の独自の強力なパスワードを指定します。 SQL Server イメージの設定が必要です。
    -e "MSSQL_COLLATION=<SQL_Server_collation>" 既定 SQL_Latin1_General_CP1_CI_AS ではなく、カスタム SQL Server照合順序を指定します。
    -p 1433:1433 ホスト環境の TCP ポート (最初の値) とコンテナーの TCP ポート (2 番目の値) をマップします。 この例では、SQL Server がコンテナー内の TCP 1433 上でリッスンしており、このコンテナーのポートがホスト上のポート 1433 に対して公開されています。
    --name sql1 ランダムに生成された名前ではなく、コンテナーのカスタム名を指定します。 複数のコンテナーを実行する場合は、この同じ名前を再利用することはできません。
    --hostname sql1 コンテナーのホスト名を明示的に設定するために使用します。 ホスト名を指定しない場合、既定ではコンテナー ID が使用されます。これは、ランダムに生成されたシステム GUID です。
    -d コンテナーをバックグラウンド (デーモン) で実行します。
    mcr.microsoft.com/mssql/server:2017-latest SQL Server Linux コンテナー イメージです。
  3. Docker コンテナーを表示するには、docker ps コマンドを使用します。

    sudo docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    次のような出力が表示されます。

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2017-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  4. STATUS 列に Up の状態が表示されている場合、SQL Server はコンテナーで実行されており、 PORTS 列に指定されたポートでリッスンしています。 SQL Server コンテナーの STATUS 列に Exited と表示されている場合は、構成ガイドのトラブルシューティングのセクションを参照してください。 SQL Server のエラー ログに SQL Server is now ready for client connections. This is an informational message; no user action is required というメッセージが表示されたら、サーバーは接続の準備ができています。 次のコマンドを使用して、コンテナー内の SQL Server のエラー ログを確認できます。

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    --hostname パラメーターを使用すると、前述のように、コンテナーの内部名がカスタム値に変更されます。 この値は、次の Transact-SQL クエリで返される名前です。

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    ターゲット コンテナーを特定しやすくするため、--hostname--name を同じ値に設定することをお勧めします。

  5. 最後の手順として、MSSQL_SA_PASSWORDps -eax 出力に表示され、同じ名前の環境変数に格納されるため、SA パスワードを変更します。 以下の手順を参照してください。

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

次の手順を開始する前に、この記事の冒頭で使用するシェル (bashPowerShell、または cmd) を選択していることをご確認ください。

  1. Microsoft Container Registry から SQL Server 2019 (15.x) Linux コンテナー イメージをプルします。

    sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
    
    docker pull mcr.microsoft.com/mssql/server:2019-latest
    
    docker pull mcr.microsoft.com/mssql/server:2019-latest
    

    ヒント

    このクイック スタートでは、SQL Server 2019 (15.x) のコンテナーを作成します。 異なるバージョンの SQL Server 用に Linux コンテナーを作成する場合は、この記事の SQL Server 2017 (14.x) または SQL Server 2022 (16.x) プレビュー バージョンを参照してください。

    上のコマンドにより、最新の SQL Server 2019 (15.x) Linux コンテナー イメージがプルされます。 特定のイメージをプルしたい場合は、mcr.microsoft.com/mssql/server:2019-GA-ubuntu のように、コロンとタグ名を追加します。 利用可能なすべてのイメージを表示するには、mssql-server Docker Hub のページを参照してください。

    この記事の bash コマンドには、sudo が使用されています。 sudo を使用して Docker を実行したくない場合は、docker グループを構成して、そのグループにユーザーを追加できます。 詳細については、「Linux でのインストール後の手順」を参照してください。

  2. Docker で Linux コンテナー イメージを実行する場合は、Bash シェルまたは管理者特権での PowerShell コマンド プロンプトから次のコマンドを使用することができます。

    重要

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

    sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
       -p 1433:1433 --name sql1 --hostname sql1 \
       -d \
       mcr.microsoft.com/mssql/server:2019-latest
    

    Note

    PowerShell Core を使用している場合、二重引用符を一重引用符に置換します。

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 --hostname sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2019-latest
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 --hostname sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2019-latest
    

    パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。従わない場合、コンテナーで SQL Server をセットアップできず、動作が停止します。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 docker logs コマンドを使用してエラー ログを調査することができます。

    既定では、このクイックスタートでは SQL Server Developer Edition のコンテナーが作成されます。 コンテナーで実稼働エディションを実行するためのプロセスは若干異なります。 詳細については、「Run production container images」(実稼働のコンテナー イメージを実行する) を参照してください。

    次の表は、前の docker run の例のパラメーターについて説明しています。

    パラメーター 説明
    -e "ACCEPT_EULA=Y" ACCEPT_EULA 変数を任意の値に設定し、使用許諾契約書の承諾を確定します。 SQL Server イメージの設定が必要です。
    -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" SQL Server のパスワード要件を満たす、8 文字以上の独自の強力なパスワードを指定します。 SQL Server イメージの設定が必要です。
    -e "MSSQL_COLLATION=<SQL_Server_collation>" 既定 SQL_Latin1_General_CP1_CI_AS ではなく、カスタム SQL Server照合順序を指定します。
    -p 1433:1433 ホスト環境の TCP ポート (最初の値) とコンテナーの TCP ポート (2 番目の値) をマップします。 この例では、SQL Server がコンテナー内の TCP 1433 上でリッスンしており、このコンテナーのポートがホスト上のポート 1433 に対して公開されています。
    --name sql1 ランダムに生成された名前ではなく、コンテナーのカスタム名を指定します。 複数のコンテナーを実行する場合は、この同じ名前を再利用することはできません。
    --hostname sql1 コンテナーのホスト名を明示的に設定するために使用します。 ホスト名を指定しない場合、既定ではコンテナー ID が使用されます。これは、ランダムに生成されたシステム GUID です。
    -d コンテナーをバックグラウンド (デーモン) で実行します。
    mcr.microsoft.com/mssql/server:2019-latest SQL Server Linux コンテナー イメージです。
  3. Docker コンテナーを表示するには、docker ps コマンドを使用します。

    sudo docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    次のような出力が表示されます。

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2019-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  4. STATUS 列に Up の状態が表示されている場合、SQL Server はコンテナーで実行されており、 PORTS 列に指定されたポートでリッスンしています。 SQL Server コンテナーの STATUS 列に Exited と表示されている場合は、構成ガイドのトラブルシューティングのセクションを参照してください。 SQL Server のエラー ログに SQL Server is now ready for client connections. This is an informational message; no user action is required というメッセージが表示されたら、サーバーは接続の準備ができています。 次のコマンドを使用して、コンテナー内の SQL Server のエラー ログを確認できます。

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    --hostname パラメーターを使用すると、前述のように、コンテナーの内部名がカスタム値に変更されます。 この値は、次の Transact-SQL クエリで返される名前です。

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    ターゲット コンテナーを特定しやすくするため、--hostname--name を同じ値に設定することをお勧めします。

  5. 最後の手順として、MSSQL_SA_PASSWORDps -eax 出力に表示され、同じ名前の環境変数に格納されるため、SA パスワードを変更します。 以下の手順を参照してください。

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

次の手順を開始する前に、この記事の冒頭で使用するシェル (bashPowerShell、または cmd) を選択していることをご確認ください。

  1. Microsoft Container Registry から SQL Server 2022 (16.x) Linux コンテナー イメージをプルします。

    sudo docker pull mcr.microsoft.com/mssql/server:2022-latest
    
    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
    docker pull mcr.microsoft.com/mssql/server:2022-latest
    

    ヒント

    このクイック スタートでは、SQL Server 2022 (16.x) プレビューのコンテナーを作成します。 異なるバージョンの SQL Server 用に Linux コンテナーを作成する場合は、この記事の SQL Server 2017 (14.x) または SQL Server 2019 (15.x) バージョンを参照してください。

    上のコマンドにより、最新の SQL Server 2022 (16.x) Linux コンテナー イメージがプルされます。 特定のイメージをプルしたい場合は、mcr.microsoft.com/mssql/server:2022-GA-ubuntu のように、コロンとタグ名を追加します。 利用可能なすべてのイメージを表示するには、mssql-server Docker Hub のページを参照してください。

    この記事の bash コマンドには、sudo が使用されています。 sudo を使用して Docker を実行したくない場合は、docker グループを構成して、そのグループにユーザーを追加できます。 詳細については、「Linux でのインストール後の手順」を参照してください。

  2. Docker で Linux コンテナー イメージを実行する場合は、Bash シェルまたは管理者特権での PowerShell コマンド プロンプトから次のコマンドを使用することができます。

    重要

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

    sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
       -p 1433:1433 --name sql1 --hostname sql1 \
       -d \
       mcr.microsoft.com/mssql/server:2022-latest
    

    Note

    PowerShell Core を使用している場合、二重引用符を一重引用符に置換します。

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 --hostname sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2022-latest
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 --hostname sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2022-latest
    

    パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。従わない場合、コンテナーで SQL Server をセットアップできず、動作が停止します。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 docker logs コマンドを使用してエラー ログを調査することができます。

    既定では、このクイックスタートでは SQL Server Developer Edition のコンテナーが作成されます。 コンテナーで実稼働エディションを実行するためのプロセスは若干異なります。 詳細については、「Run production container images」(実稼働のコンテナー イメージを実行する) を参照してください。

    次の表は、前の docker run の例のパラメーターについて説明しています。

    パラメーター 説明
    -e "ACCEPT_EULA=Y" ACCEPT_EULA 変数を任意の値に設定し、使用許諾契約書の承諾を確定します。 SQL Server イメージの設定が必要です。
    -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" SQL Server のパスワード要件を満たす、8 文字以上の独自の強力なパスワードを指定します。 SQL Server イメージの設定が必要です。
    -e "MSSQL_COLLATION=<SQL_Server_collation>" 既定 SQL_Latin1_General_CP1_CI_AS ではなく、カスタム SQL Server照合順序を指定します。
    -p 1433:1433 ホスト環境の TCP ポート (最初の値) とコンテナーの TCP ポート (2 番目の値) をマップします。 この例では、SQL Server がコンテナー内の TCP 1433 上でリッスンしており、このコンテナーのポートがホスト上のポート 1433 に対して公開されています。
    --name sql1 ランダムに生成された名前ではなく、コンテナーのカスタム名を指定します。 複数のコンテナーを実行する場合は、この同じ名前を再利用することはできません。
    --hostname sql1 コンテナーのホスト名を明示的に設定するために使用します。 ホスト名を指定しない場合、既定ではコンテナー ID が使用されます。これは、ランダムに生成されたシステム GUID です。
    -d コンテナーをバックグラウンド (デーモン) で実行します。
    mcr.microsoft.com/mssql/server:2022-latest SQL Server Linux コンテナー イメージです。
  3. Docker コンテナーを表示するには、docker ps コマンドを使用します。

    sudo docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    次のような出力が表示されます。

    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2022-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  4. STATUS 列に Up の状態が表示されている場合、SQL Server はコンテナーで実行されており、 PORTS 列に指定されたポートでリッスンしています。 SQL Server コンテナーの STATUS 列に Exited と表示されている場合は、構成ガイドのトラブルシューティングのセクションを参照してください。 SQL Server のエラー ログに SQL Server is now ready for client connections. This is an informational message; no user action is required というメッセージが表示されたら、サーバーは接続の準備ができています。 次のコマンドを使用して、コンテナー内の SQL Server のエラー ログを確認できます。

    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    --hostname パラメーターを使用すると、前述のように、コンテナーの内部名がカスタム値に変更されます。 この値は、次の Transact-SQL クエリで返される名前です。

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    ターゲット コンテナーを特定しやすくするため、--hostname--name を同じ値に設定することをお勧めします。

  5. 最後の手順として、MSSQL_SA_PASSWORDps -eax 出力に表示され、同じ名前の環境変数に格納されるため、SA パスワードを変更します。 以下の手順を参照してください。

システム管理者のパスワードを変更する

SA アカウントは、セットアップ時に作成される SQL Server インスタンスのシステム管理者です。 SQL Server のコンテナーを作成した後、そのコンテナーで echo $MSSQL_SA_PASSWORD を実行すると、指定した環境変数 MSSQL_SA_PASSWORD が検索できるようになります。 セキュリティのため、SA のパスワードを変更してください。

  1. SA ユーザーに使用する強力なパスワードを選択します。

  2. docker exec を使用して sqlcmd を実行し、Transact-SQL でパスワードを変更します。 次の例では、古いパスワードと新しいパスワードはユーザー入力から読み込まれます。

    sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
    -S localhost -U SA \
     -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \
     -Q "ALTER LOGIN SA WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
    
  1. SA ユーザーに使用する強力なパスワードを選択します。

  2. 次の例では、古いパスワード <YourStrong@Passw0rd> と新しいパスワード <YourNewStrong@Passw0rd> を実際のパスワード値に置き換えます。

    docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong@Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    
  1. SA ユーザーに使用する強力なパスワードを選択します。

  2. 次の例では、古いパスワード <YourStrong@Passw0rd> と新しいパスワード <YourNewStrong@Passw0rd> を実際のパスワード値に置き換えます。

    docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong@Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    

SQL Server への接続

次の手順では、SQL Server コマンドライン ツールの sqlcmd をコンテナー内で使用し、SQL Server に接続します。

  1. 実行中のコンテナー内で対話型の Bash シェルを開始するには、docker exec -it コマンドを使用します。 次の例の sql1 は、コンテナーを作成したときに --name パラメーターによって指定された名前です。

    sudo docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
  2. コンテナー内では、完全なパスで sqlcmd とローカル接続します。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
    

    ヒント

    コマンド ラインでパスワードを省略すると、入力を求められます。 次に例を示します。

      /opt/mssql-tools/bin/sqlcmd -S localhost -U SA
    
  3. 成功すると、sqlcmd コマンド プロンプト 1> が表示されます。

データの作成とクエリ

後続のセクションでは sqlcmd と Transact-SQL to を使用し、新しいデータベースを作成し、データを追加し、クエリを実行します。

新しいデータベースの作成

次の手順では、TestDB という名前の新しいデータベースを作成します。

  1. sqlcmd のコマンド プロンプトに次の Transact-SQL コマンドを貼り付け、テスト データベースを作成します。

    CREATE DATABASE TestDB;
    
  2. 次の行に、サーバー上のすべてのデータベースの名前を返すクエリを記述します。

    SELECT Name from sys.databases;
    
  3. 上の 2 つのコマンドは、すぐには実行されません。 新しい行に「GO」と入力し、上のコマンドを実行します。

    GO
    

データの挿入

次に、新しいテーブル Inventory を作成し、2 つの新しい行を挿入します。

  1. sqlcmd のコマンド プロンプトで、コンテキストを新しい TestDB データベースに切り替えます。

    USE TestDB;
    
  2. Inventory という名前の新しいテーブルを作成します。

    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
    
  3. 新しいテーブルにデータを挿入します。

    INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
    
  4. GO」と入力して前のコマンドを実行します。

    GO
    

データの選択

ここで、Inventory テーブルからデータを返すクエリを実行します。

  1. sqlcmd のコマンド プロンプトで、数量が 152 より大きいInventory テーブルから行を返すクエリを入力します。

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. 次のコマンドを実行します。

    GO
    

sqlcmd コマンド プロンプトの終了

  1. sqlcmd セッションを終了するには、「QUIT」と入力します。

    QUIT
    
  2. コンテナー内で対話型のコマンド プロンプトを終了するには、exit と入力します。 コンテナーは、対話型の Bash シェルを終了した後も引き続き実行されます。

コンテナーの外からの接続

SQL 接続をサポートする外部の Linux、Windows、macOS ツールから、Docker コンピューターの SQL Server インスタンスに接続することもできます。

次の手順ではコンテナーの外で sqlcmd を使用して、コンテナーで実行されている SQL Server に接続します。 この手順は、コンテナーの外に SQL Server コマンド ライン ツールがインストール済みであることを前提としています。 他のツールを使用する場合にも同じ原則が適用されますが、接続するプロセスはツールごとに固有です。

  1. ifconfig または ip addr を使用して、コンテナーのホスト コンピューターの IP アドレスを検索します。

  2. この例では、sqlcmd ツールをクライアント マシン上にインストールします。 詳細については、Windows 上での sqlcmd のインストールまたは Linux 上での sqlcmd のインストールを参照してください。

  3. コンテナーのポート 1433 にマップされた IP アドレスとポートを指定して sqlcmd を実行します。 この例の場合、ポートはホスト マシンと同じく、ポート 1433 です。 ホスト マシン上でマップされた別のポートを指定した場合は、ここにそれを使用します。 ファイアウォールで適切な受信ポートを開き、接続を許可する必要もあります。

    sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
    
    sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
    
    sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
    
  4. Transact-SQL コマンドを実行します。 終わったら、QUIT と入力します。

SQL Server に接続するその他の一般的なツールは次のとおりです。

コンテナーの削除

このチュートリアルで使用した SQL Server のコンテナーを削除する場合は、次のコマンドを実行します。

sudo docker stop sql1
sudo docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1

警告

コンテナーを完全に停止して削除すると、コンテナー内のすべての SQL Server データが削除されます。 データを保持する必要がある場合は、コンテナーからバックアップ ファイルを作成してコピーするか、コンテナー データを永続化する手法を使用します。

Docker のデモ

Docker の SQL Server Linux コンテナー イメージを使用すると、開発とテストの改善のためにどのように Docker を使用できるかを知りたくなるかもしれません。 次のビデオは、継続的インテグレーションと展開シナリオでどのように Docker を使用できるかを説明しています。

次のステップ

リソース、フィードバック、既知の問題について、mssql-docker GitHub リポジトリも参照してください。