クイック スタート: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 の詳細については、こちらをご覧ください。
前提条件
サポートされている Linux ディストリビューションの Docker エンジン 1.8 以降。 詳細については、「Install Docker」(Docker をインストールする) を参照してください。
ハードウェア要件とプロセッサのサポートについては、次を参照してください。
Docker
overlay2
ストレージ ドライバー。 ほとんどのユーザーにとっては、このドライバーが既定です。 このストレージ プロバイダーを利用しておらず、変更する必要がある場合は、overlay2 の構成に関する Docker ドキュメントで、手順と警告を参照してください。少なくとも 2 GB のディスク領域。
少なくとも 2 GB の RAM。
SQL Server Linux コンテナー イメージをプルして実行する
次の手順を開始する前に、この記事の冒頭で使用するシェル (bash、PowerShell、または cmd) を選択していることをご確認ください。
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 でのインストール後の手順」を参照してください。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 コンテナー イメージです。 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
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
を同じ値に設定することをお勧めします。最後の手順として、
MSSQL_SA_PASSWORD
がps -eax
出力に表示され、同じ名前の環境変数に格納されるため、SA パスワードを変更します。 以下の手順を参照してください。
SQL Server Linux コンテナー イメージをプルして実行する
次の手順を開始する前に、この記事の冒頭で使用するシェル (bash、PowerShell、または cmd) を選択していることをご確認ください。
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 でのインストール後の手順」を参照してください。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 コンテナー イメージです。 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
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
を同じ値に設定することをお勧めします。最後の手順として、
MSSQL_SA_PASSWORD
がps -eax
出力に表示され、同じ名前の環境変数に格納されるため、SA パスワードを変更します。 以下の手順を参照してください。
SQL Server Linux コンテナー イメージをプルして実行する
次の手順を開始する前に、この記事の冒頭で使用するシェル (bash、PowerShell、または cmd) を選択していることをご確認ください。
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 でのインストール後の手順」を参照してください。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 コンテナー イメージです。 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
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
を同じ値に設定することをお勧めします。最後の手順として、
MSSQL_SA_PASSWORD
がps -eax
出力に表示され、同じ名前の環境変数に格納されるため、SA パスワードを変更します。 以下の手順を参照してください。
システム管理者のパスワードを変更する
SA アカウントは、セットアップ時に作成される SQL Server インスタンスのシステム管理者です。 SQL Server のコンテナーを作成した後、そのコンテナーで echo $MSSQL_SA_PASSWORD
を実行すると、指定した環境変数 MSSQL_SA_PASSWORD
が検索できるようになります。 セキュリティのため、SA のパスワードを変更してください。
SA ユーザーに使用する強力なパスワードを選択します。
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}")\""
SA ユーザーに使用する強力なパスワードを選択します。
次の例では、古いパスワード
<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>'"
SA ユーザーに使用する強力なパスワードを選択します。
次の例では、古いパスワード
<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 に接続します。
実行中のコンテナー内で対話型の Bash シェルを開始するには、
docker exec -it
コマンドを使用します。 次の例のsql1
は、コンテナーを作成したときに--name
パラメーターによって指定された名前です。sudo docker exec -it sql1 "bash"
docker exec -it sql1 "bash"
docker exec -it sql1 "bash"
コンテナー内では、完全なパスで sqlcmd とローカル接続します。
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
ヒント
コマンド ラインでパスワードを省略すると、入力を求められます。 次に例を示します。
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA
成功すると、sqlcmd コマンド プロンプト
1>
が表示されます。
データの作成とクエリ
後続のセクションでは sqlcmd と Transact-SQL to を使用し、新しいデータベースを作成し、データを追加し、クエリを実行します。
新しいデータベースの作成
次の手順では、TestDB
という名前の新しいデータベースを作成します。
sqlcmd のコマンド プロンプトに次の Transact-SQL コマンドを貼り付け、テスト データベースを作成します。
CREATE DATABASE TestDB;
次の行に、サーバー上のすべてのデータベースの名前を返すクエリを記述します。
SELECT Name from sys.databases;
上の 2 つのコマンドは、すぐには実行されません。 新しい行に「
GO
」と入力し、上のコマンドを実行します。GO
データの挿入
次に、新しいテーブル Inventory
を作成し、2 つの新しい行を挿入します。
sqlcmd のコマンド プロンプトで、コンテキストを新しい
TestDB
データベースに切り替えます。USE TestDB;
Inventory
という名前の新しいテーブルを作成します。CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
新しいテーブルにデータを挿入します。
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
「
GO
」と入力して前のコマンドを実行します。GO
データの選択
ここで、Inventory
テーブルからデータを返すクエリを実行します。
sqlcmd のコマンド プロンプトで、数量が 152 より大きい
Inventory
テーブルから行を返すクエリを入力します。SELECT * FROM Inventory WHERE quantity > 152;
次のコマンドを実行します。
GO
sqlcmd コマンド プロンプトの終了
sqlcmd セッションを終了するには、「
QUIT
」と入力します。QUIT
コンテナー内で対話型のコマンド プロンプトを終了するには、
exit
と入力します。 コンテナーは、対話型の Bash シェルを終了した後も引き続き実行されます。
コンテナーの外からの接続
SQL 接続をサポートする外部の Linux、Windows、macOS ツールから、Docker コンピューターの SQL Server インスタンスに接続することもできます。 外部ツールは、ホスト コンピューターの IP アドレスを使用します。
次の手順ではコンテナーの外で sqlcmd を使用して、コンテナーで実行されている SQL Server に接続します。 この手順は、コンテナーの外に SQL Server コマンド ライン ツールがインストール済みであることを前提としています。 他のツールを使用する場合にも同じ原則が適用されますが、接続するプロセスはツールごとに固有です。
ifconfig
またはip addr
を使用して、コンテナーのホスト コンピューターの IP アドレスを検索します。この例では、sqlcmd ツールをクライアント マシン上にインストールします。 詳細については、Windows 上での sqlcmd のインストールまたは Linux 上での sqlcmd のインストールを参照してください。
コンテナーのポート 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>"
Transact-SQL コマンドを実行します。 終わったら、
QUIT
と入力します。
SQL Server に接続するその他の一般的なツールは次のとおりです。
- Visual Studio Code
- Windows の SQL Server Management Studio (SSMS)
- Azure Data Studio
- mssql-cli (プレビュー)
- PowerShell Core
コンテナーの削除
このチュートリアルで使用した 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 を使用できるかを説明しています。
次のステップ
- Linux コンテナーで SQL Server データベースを復元する。
- 複数コンテナーの実行とデータの永続化について学習する。
- SQL Server Linux コンテナーのトラブルシューティング。
リソース、フィードバック、既知の問題について、mssql-docker GitHub リポジトリも参照してください。