クイック スタート: Docker を使用して SQL Server 2017 コンテナー イメージを実行するQuickstart: Run the SQL Server 2017 container image with Docker

このトピックの対象: はいSQL サーバー (Linux のみ)ありませんAzure SQL DatabaseありませんAzure SQL Data WarehouseありませんParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

このクイック スタートでは、Docker を使用して SQL Server 2017 コンテナー イメージ mssql-server-linux をプルして実行します。In this quickstart, you use Docker to pull and run the SQL Server 2017 container image, mssql-server-linux. 次に、sqlcmd と接続して最初のデータベースを作成し、クエリを実行します。Then connect with sqlcmd to create your first database and run queries.

このイメージは、Ubuntu 16.04 の Linux で動作する SQL Server で構成されます。This image consists of SQL Server running on Linux based on Ubuntu 16.04. Linux の Docker エンジン 1.8 + または Docker for Mac/Windows から使用できます。It can be used with the Docker Engine 1.8+ on Linux or on Docker for Mac/Windows.

注意

このクイック スタートは mssql-server-linux イメージの使用に特にフォーカスしています。This quick start specifically focuses on using the mssql-server-linux image. Windows イメージについては触れていませんが、mssql-server-windows-developer Docker Hub ページ で詳細情報を得ることができます。The Windows image is not covered, but you can learn more about it on the mssql-server-windows-developer Docker Hub page.

前提条件Prerequisites

  • サポートされている任意の Linux ディストリビューションの Docker エンジン 1.8 + または Docker for Mac/Windows。Docker Engine 1.8+ on any supported Linux distribution or Docker for Mac/Windows. 詳細については「Install Docker」(Docker のインストール) を参照してください。For more information, see Install Docker.
  • 2 GB 以上のディスク領域Minimum of 2 GB of disk space
  • 2 GB 以上の RAMMinimum of 2 GB of RAM
  • SQL Server on Linux のシステム要件System requirements for SQL Server on Linux.

コンテナー イメージのプルと実行Pull and run the container image

  1. Docker Hub から SQL Server 2017 Linux コンテナー イメージをプルします。Pull the SQL Server 2017 Linux container image from Docker Hub.

    sudo docker pull microsoft/mssql-server-linux:2017-latest
    
    docker pull microsoft/mssql-server-linux:2017-latest
    

    前のコマンドは、最新の SQL Server 2017 コンテナー イメージをプルします。The previous command pulls the latest SQL Server 2017 container image. 特定のイメージをプルするには、コロンとタグ名を追加します (たとえば、 microsoft/mssql-server-linux:2017-GA)。If you want to pull a specific image, you add a colon and the tag name (for example, microsoft/mssql-server-linux:2017-GA). 利用可能なすべてのイメージを表示するには mssql-server-linux Docker hub ページ を参照してください。To see all available images, see the mssql-server-linux Docker hub page.

    この記事での bash コマンドのsudo使用されます。For the bash commands in this article, sudo is used. Macos でsudoは必要ないかもしれません。On MacOS, sudo might not be required. Linux では、使用しない場合sudoDocker を実行するには、構成、 dockerをグループ化し、そのグループにユーザーを追加します。On Linux, if you do not want to use sudo to run Docker, you can configure a docker group and add users to that group. 詳細については、次を参照してください。 Linux のインストール後のステップします。For more information, see Post-installation steps for Linux.

  2. Docker でコンテナー イメージを実行するには、bash シェル (Linux/macOS) または管理者特権の PowerShell コマンド プロンプトから次のコマンドを使用できます。To run the container image with Docker, you can use the following command from a bash shell (Linux/macOS) or elevated PowerShell command prompt.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' \
       -p 1433:1433 --name sql1 \
       -d microsoft/mssql-server-linux:2017-latest
    
    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong!Passw0rd>" `
       -p 1433:1433 --name sql1 `
       -d microsoft/mssql-server-linux:2017-latest
    

    注意

    パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。従わない場合、コンテナーで SQL Server をセットアップできず、動作が停止します。The password should follow the SQL Server default password policy, otherwise the container can not setup SQL server and will stop working. 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、十進数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。By default, the password must be at least 8 characters long and contain characters from three of the following four sets: Uppercase letters, Lowercase letters, Base 10 digits, and Symbols. docker ログ コマンドを実行することでエラー ログを調査することができます。You can examine the error log by executing the docker logs command.

    注意

    既定では、これは SQL Server 2017 の Developer エディションのコンテナーを作成します。By default, this creates a container with the Developer edition of SQL Server 2017. コンテナーで実稼働のエディションを実行するためのプロセスは若干異なります。The process for running production editions in containers is slightly different. 詳細については 「実稼働環境のコンテナー イメージを実行する」を参照してください。For more information, see Run production container images.

    次の表では、前述の docker run の例におけるパラメーターを説明しています。The following table provides a description of the parameters in the previous docker run example:

    パラメーターParameter 説明Description
    -e 'ACCEPT_EULA=Y'-e 'ACCEPT_EULA=Y' ACCEPT_EULA 変数に 使用許諾契約書 の同意を確認するための任意の値を設定します。Set the ACCEPT_EULA variable to any value to confirm your acceptance of the End-User Licensing Agreement. SQL Server イメージに必須の設定です。Required setting for the SQL Server image.
    -e ' SA_PASSWORD =<YourStrong!Passw0rd>'-e 'SA_PASSWORD=<YourStrong!Passw0rd>' 8 文字以上で、 SQL Server のパスワード要件 を満たす強力なパスワードを指定します。Specify your own strong password that is at least 8 characters and meets the SQL Server password requirements. SQL Server イメージに必須の設定です。Required setting for the SQL Server image.
    -p 1433:1433-p 1433:1433 ホスト環境の TCP ポート (最初の値) を コンテナーの TCP ポート (2 番目の値) にマップします。Map a TCP port on the host environment (first value) with a TCP port in the container (second value). この例では、SQL Server がコンテナー内の TCP 1433 でリッスンしていると、ホスト上の 1433 ポートにこの公開されます。In this example, SQL Server is listening on TCP 1433 in the container and this is exposed to the port, 1433, on the host.
    --name sql1--name sql1 ランダムに生成されたものではなく、コンテナーのカスタム名を指定します。Specify a custom name for the container rather than a randomly generated one. 2 つ以上のコンテナーを実行する場合、同じ名前を再利用することはできません。If you run more than one container, you cannot reuse this same name.
    microsoft/mssql-server-linux:2017-latestmicrosoft/mssql-server-linux:2017-latest SQL Server 2017 Linux コンテナー イメージ。The SQL Server 2017 Linux container image.
  3. Docker コンテナーを表示するには、 docker ps コマンドを使用します。To view your Docker containers, use the docker ps command.

    sudo docker ps -a
    
    docker ps -a
    

    次のスクリーンショットのような出力が表示されます。You should see output similar to the following screenshot:

    Docker ps コマンドの出力

  4. [STATUS] 列に [Up] の状態が表示されている場合、SQL Server はコンテナーで実行されており、[PORTS] 列に指定されたポートでリッスンしています。If the STATUS column shows a status of Up, then SQL Server is running in the container and listening on the port specified in the PORTS column. SQL Server コンテナーの [STATUS] 列に [Exited] と表示されている場合は、構成ガイドのトラブルシューティングのセクションを参照してください。If the STATUS column for your SQL Server container shows Exited, see the Troubleshooting section of the configuration guide.

-h (ホスト名) のパラメーターも役に立ちますが、簡略化のためこのチュートリアルでは使用しません。The -h (host name) parameter is also useful, but it is not used in this tutorial for simplicity. これにより、コンテナーの内部名がカスタム値に変更されます。This changes the internal name of the container to a custom value. これは、次の Transact-SQL クエリで返される名前です。This is the name you'll see returned in the following Transact-SQL query:

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

-h--name を同じ値に設定することは、対象のコンテナーを特定しやすくするためのひとつの良い方法です。Setting -h and --name to the same value is a good way to easily identify the target container.

SA パスワードを変更する Change the SA password

SA アカウントは、セットアップ時に作成される SQL Server インスタンスのシステム管理者です。The SA account is a system administrator on the SQL Server instance that gets created during setup. SQL Server のコンテナーを作成した後、そのコンテナーで echo $MSSQL_SA_PASSWORD を実行すると、指定した環境変数 MSSQL_SA_PASSWORD が検索できるようになります。After creating your SQL Server container, the MSSQL_SA_PASSWORD environment variable you specified is discoverable by running echo $MSSQL_SA_PASSWORD in the container. セキュリティのため、SA のパスワードを変更してください。For security purposes, change your SA password.

  1. SA ユーザーに使用する強力なパスワードを選択します。Choose a strong password to use for the SA user.

  2. docker exec を使用して sqlcmd を実行し、Transact-SQL でパスワードを変更します。Use docker exec to run sqlcmd to change the password using Transact-SQL. <YourStrong!Passw0rd><YourNewStrong!Passw0rd> を独自のパスワードの値に置き換えます。Replace <YourStrong!Passw0rd> and <YourNewStrong!Passw0rd> with your own password values.

    sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U SA -P '<YourStrong!Passw0rd>' \
       -Q 'ALTER LOGIN SA WITH PASSWORD="<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 への接続Connect to SQL Server

次の手順では、コンテナー内の SQL Server のコマンドライン ツール sqlcmd を使用して、SQL Server に接続します。 The following steps use the SQL Server command-line tool, sqlcmd, inside the container to connect to SQL Server.

  1. コマンド docker exec -it を使用して、実行中のコンテナー内の対話型 bash シェルを起動します。Use the docker exec -it command to start an interactive bash shell inside your running container. 次の例にある sql1 は、コンテナーを作成したときに --name パラメーターで指定した名前です。 In the following example sql1 is name specified by the --name parameter when you created the container.

    sudo docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
  2. コンテナー内では sqlcmd とローカル接続してください。Once inside the container, connect locally with sqlcmd. 既定では sqlcmd はパスにないため、完全なパスを指定する必要があります。Sqlcmd is not in the path by default, so you have to specify the full path.

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

    ヒント

    コマンド ラインでパスワードを省略すると、入力を求められます。You can omit the password on the command-line to be prompted to enter it.

  3. 成功すると、sqlcmd のコマンド プロンプトである 1> が表示されます。 If successful, you should get to a sqlcmd command prompt: 1>.

データの作成とクエリCreate and query data

次のセクションでは、sqlcmd と Transact-SQL を使用して新しいデータベースを作成し、データを追加して簡単なクエリを実行します。 The following sections walk you through using sqlcmd and Transact-SQL to create a new database, add data, and run a simple query.

新しいデータベースの作成Create a new database

次の手順では、TestDB という名前の新しいデータベースを作成します。The following steps create a new database named TestDB.

  1. sqlcmd のコマンド プロンプトに次の Transact-SQL コマンドを貼り付け、テスト データベースを作成します。From the sqlcmd command prompt, paste the following Transact-SQL command to create a test database:

    CREATE DATABASE TestDB
    
  2. 次の行に、サーバー上のすべてのデータベースの名前を返すクエリを記述します。On the next line, write a query to return the name of all of the databases on your server:

    SELECT Name from sys.Databases
    
  3. 前の 2 つのコマンドは、すぐに実行されていません。The previous two commands were not executed immediately. 前のコマンドを実行するには、新しい行に「GO」と入力する必要があります。You must type GO on a new line to execute the previous commands:

    GO
    

データの挿入Insert data

次に、新しいテーブル Inventory を作成し、2 つの新しい行を挿入します。Next create a new table, Inventory, and insert two new rows.

  1. sqlcmd のコマンド プロンプトで、新しい TestDB データベースのコンテキストに切り替えます。 From the sqlcmd command prompt, switch context to the new TestDB database:

    USE TestDB
    
  2. Inventory という名前の新しいテーブルを作成します。Create new table named Inventory:

    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
    
  3. 新しいテーブルにデータを挿入します。Insert data into the new table:

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

    GO
    

データの取得Select data

ここで、Inventory テーブルからデータを返すクエリを実行します。Now, run a query to return data from the Inventory table.

  1. sqlcmd のコマンド プロンプトで、数量が 152 より大きいInventory テーブルから行を返すクエリを入力します。From the sqlcmd command prompt, enter a query that returns rows from the Inventory table where the quantity is greater than 152:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. コマンドを実行します。Execute the command:

    GO
    

sqlcmd コマンド プロンプトの終了Exit the sqlcmd command prompt

  1. sqlcmd セッションを終了するには、「QUIT」と入力します。To end your sqlcmd session, type QUIT:

    QUIT
    
  2. コンテナー内の対話型のコマンド プロンプトを終了するには、exitと入力します。To exit the interactive command-prompt in your container, type exit. コンテナーは、対話型 bash シェルを終了した後に実行を続けます。Your container continues to run after you exit the interactive bash shell.

コンテナー外部から接続するConnect from outside the container

SQL 接続をサポートする外部の Linux、Windows、macOS ツールから、Docker コンピューターの SQL Server インスタンスに接続することもできます。You can also connect to the SQL Server instance on your Docker machine from any external Linux, Windows, or macOS tool that supports SQL connections.

次の手順ではコンテナーの外で sqlcmd を使用して、コンテナーで実行されている SQL Server に接続します。The following steps use sqlcmd outside of your container to connect to SQL Server running in the container. この手順は、コンテナーの外に SQL Server コマンド ライン ツールがインストール済みであることを前提としています。These steps assume that you already have the SQL Server command-line tools installed outside of your container. どのツールを使用しても同じプリンシパルが適用されますが、接続するプロセスはツールごとに固有です。The same principals apply when using other tools, but the process of connecting is unique to each tool.

  1. コンテナーをホストしているコンピューターの IP アドレスを探します。Find the IP address for the machine that hosts your container. Linux の場合、 ifconfig または ip addr を使用します。Windows の場合、ipconfig を使用します。On Linux, use ifconfig or ip addr. On Windows, use ipconfig.

  2. IP アドレスとコンテナーのポート 1433 にマップされたポートを指定して sqlcmd を実行します。Run sqlcmd specifying the IP address and the port mapped to port 1433 in your container. この例では、1433、ホスト コンピューターで同じポートであります。In this example, that is the same port, 1433, on the host machine. ホスト コンピューターで別のマップされたポートを指定した場合は、ここで使用します。If you specified a different mapped port on the host machine, you would use it here.

    sqlcmd -S 10.3.2.4,1433 -U SA -P '<YourNewStrong!Passw0rd>'
    
    sqlcmd -S 10.3.2.4,1433 -U SA -P "<YourNewStrong!Passw0rd>"
    
  3. Transact-SQL コマンドを実行します。Run Transact-SQL commands. 終了したら QUIT を入力します。When finished, type QUIT.

SQL Server に接続するその他の一般的なツールには次のものがあります。Other common tools to connect to SQL Server include:

コンテナーを削除するRemove your container

このチュートリアルで使用した SQL Server のコンテナーを削除する場合は、次のコマンドを実行します。If you want to remove the SQL Server container used in this tutorial, run the following commands:

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

警告

コンテナーを完全に停止して削除すると、コンテナー内のすべての SQL Server データが削除されます。Stopping and removing a container permanently deletes any SQL Server data in the container. データを保持する必要がある場合は、コンテナーからバックアップ ファイルを作成してコピーするか、コンテナー データを永続化する手法を使用します。If you need to preserve your data, create and copy a backup file out of the container or use a container data persistence technique.

Docker のデモDocker demo

Docker の SQL Server コンテナー イメージを使用すると、開発とテストの改善のためにどのように Docker を使用できるかを知りたくなるかもしれません。After you have tried using the SQL Server container image for Docker, you might want to know how Docker is used to improve development and testing. 次のビデオは、継続的インテグレーションと展開シナリオでどのように Docker を使用できるかを説明しています。The following video shows how Docker can be used in a continuous integration and deployment scenario.

次のステップNext steps

データベース バックアップファイルをコンテナーに復元する方法については、「Restore a SQL Server database in a Linux Docker container」(Linux の Docker コンテナーで SQL Server データベースを復元する) を参照してください。For a tutorial on how to restore database backup files into a container, see Restore a SQL Server database in a Linux Docker container. 複数のコンテナーの実行、データの永続性、トラブルシューティングなどのその他のシナリオを調べるには、「Configure SQL Server 2017 container images on Docker」(Docker で SQL Server 2017 コンテナー イメージを構成する) を参照してください。To explore other scenarios, such as running multiple containers, data persistence, and troubleshooting, see Configure SQL Server 2017 container images on Docker.

また、リソース、フィードバック、既知の問題については mssql-docker GitHub リポジトリをご確認ください。Also, check out the mssql-docker GitHub repository for resources, feedback, and known issues.