Install SQL Server 2019 CTP3.2 (RHEL) on Docker


はじめに

SQL Server 2017より、SQL Server on Linuxが登場し、コンテナ環境でSQL Serverが利用できるようになりました。ただし、これは Ubuntu ベースのコンテナのみの提供であり、RHELベースのコンテナがほしいユーザーもいたかと思います。

SQL Server 2019からは、現行のUbuntuベースに加え、新たにRHELベースのコンテナも利用できるようになりました。そのため、今回はRHELベースでのSQL ServerコンテナをDockerにてインストールしてみようと思います。

MS公式ドキュメントは こちら を参照してください。

また、Docker Hubは こちら です。参考にしてください。

環境

今回は、以下の環境でインストールを実施しています。

- OS: macOS Mojave 10.14.6
- Docker Desktop: 2.1.0.0 (36874)
- Docker Engine: 19.03.1
- Docker Compose: 1.24.1

また、インストールしたSQL Serverコンテナのバージョンは、2019-CTP3.2です。
※2019/8/12現在にて公開されている、SQL Server 2019の最新バージョンです。これは、GA(General Availability)されているものではありません。

インストール

Yamlファイルは、GitHub上でも公開しています。面倒な方はこちらからYamlファイルを取得してください。

docker-compose.yaml
version: '3'

services:
  mssql:
    image: mcr.microsoft.com/mssql/rhel/server:2019-CTP3.2
    container_name: 'mssql2019-ctp32-rhel'
    hostname: 'localhost'
    environment:
      - MSSQL_SA_PASSWORD=<your_strong_password>
      - ACCEPT_EULA=Y
      # - MSSQL_PID=<your_product_id> # default: Developer
      # - MSSQL_PID=Express
      # - MSSQL_PID=Standard
      # - MSSQL_PID=Enterprise
      # - MSSQL_PID=EnterpriseCore
    ports:
      - 1433:1433
    # volumes: # Mounting a volume does not work on Docker for Mac
    #   - ./mssql/log:/var/opt/mssql/log
    #   - ./mssql/data:/var/opt/mssql/data
  • MSSQL_SA_PASSWORDの<your_strong_password>は、任意の強力なパスワードに書き換えてください。
  • MSSQL_PIDは、指定しない場合はデフォルトで開発者モード(Developer Edition)で起動します。SQL Server 2019は2019/8/12現在、GAされていないので、こちらは指定しなくても問題無いかと思います。(Developer Editionなどでコンテナを起動すると、起動時のログ内にて有効期限のようなものが表示されます)
  • Docker for Macでは、Volumesのマウントを指定すると起動時にエラーになるため、Volumesはコメントアウトしてください。(Known Issuesとして報告されています)

コンテナ起動

docker-compose up -dにて、コンテナを起動してください。

接続

docker-compose logs -fでログを表示し、以下の内容が表示されれば、SQL Serverに接続可能です。
sqlcmdやSSMS、Azure Data Studioを使用して、環境にアクセスできることを確認してください。

2019-08-12 05:09:04.14 spid23s     Server is listening on [ ::1 <ipv6> 1431].
2019-08-12 05:09:04.14 spid23s     Server is listening on [ 127.0.0.1 <ipv4> 1431].
2019-08-12 05:09:04.16 spid23s     SQL Server is now ready for client connections. This is an informational message; no user action is required.

sqlcmd

SQL Serverのコンテナに入り、sqlcmdを起動して、SQL Serverに接続できます。
docker psでコンテナIDを確認します。

$ docker ps
CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS              PORTS                    NAMES
980e6adccd38        mcr.microsoft.com/mssql/rhel/server:2019-CTP3.2   "/opt/mssql/bin/sqls…"   2 hours ago         Up 16 minutes       0.0.0.0:1433->1433/tcp   mssql2019-ctp32-rhel

docker execでコンテナにログインします。

$docker exec -it 980e6adccd38 "bash"

コンテナ内に入ったら、sqlcmdを起動して、SQL Serverにログインします。
<YourPassword>は、MSSQL_SA_PASSWORDで指定した値に書き換えてください。
sqlcmdが起動したら、接続成功です。

[root@localhost /]# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'
1>

SSMS

今回はMac環境での実行のため、SSMSは利用できないので実施しません。
接続のための入力値などは、Azure Data Studioの欄を参考にしてください。

Azure Data Studio

Connection Detailsの欄を参考に、値を入力してください。
入力内容に問題がなければ、Connectボタン押下にて、SQL Serverに接続できます。

関連リンク

参考情報