はじめに
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ファイルを取得してください。
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に接続できます。
関連リンク
参考情報
- Docker 上で SQL Server コンテナー イメージを構成する - Microsoft Docs