Docker for WindowsでSQLServerを動作させる

リポジトリからイメージを取ってきて起動する

最低限で起動さえすればいい場合

PS > docker run -d --rm -p 1433:1433 -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password0!" -e "MSSQL_PID=Express" microsoft/mssql-server-linux:2017-latest
-e の引数意味合い
ACCEPT_EULA=YEULAに同意する
SA_PASSWORD=Password0!saアカウントのパスワード
MSSQL_PID=ExpressプロダクトID or エディションの指定
PS > docker -ps
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                     NAMES
1da555c62a3c        microsoft/mssql-server-linux:2017-latest   "/opt/mssql/bin/sqls…"   10 seconds ago      Up 8 seconds        0.0.0.0:1433->1433/tcp   eager_panini

SQLServerは起動時に渡すオプションが多い

–env-file オプションで渡せば多くても安心

env.txtのようなテキストファイルを作っておいて--env-fileオプションで渡すことができる

PS > cat env.txt
ACCEPT_EULA=Y
SA_PASSWORD=Password0!
MSSQL_PID=Express
MSSQL_COLLATION=Japanese_CI_AS
MSSQL_LOG_DIR=/MSSQL/log
MSSQL_DATA_DIR=/MSSQL/data
MSSQL_BACKUP_DIR=/MSSQL/backup
MSSQL_MASTER_DATA_FILE=/MSSQL/master.mdf
MSSQL_MASTER_LOG_FILE=/MSSQL/mastlog.ldf
PS > docker run -d --rm -p 1433:1433 --env-file=C:\Docker\SQLServer\env.txt -v C:\Docker\SQLServer\DB:/MSSQL microsoft/mssql-server-linux:2017-latest

これでコンテナを終了させてもデータは永続化されています