DockerでSQL Server環境を構築する
SQLを試すための環境が欲しかったため、DockerでSQL Serverを実行する環境を作ってみました。
[目次]
- 1. やりたいこと
- 2. SQL Serverのコンテナを取得する
- 3. コンテナの生成と起動
- 4. SQL Serverを起動する
- 5. データベースの作成
- 6. SQL Server Management Studioから接続
- 7. コンテナの停止・削除
- 8. まとめ
- 参考
1. やりたいこと
- Docker for Windowsで、SQL Server のコンテナを取得・起動。
- コンテナ内のSQL Serverでデータベースを作成。
- ホストPCのSQL Server Management Studioから、コンテナで起動しているSQL Serverに接続。
- SQL実行する。
2. SQL Serverのコンテナを取得する
Docker HubからSQL Serverのコンテナをダウンロードしてきます。 Docker Hubには、Microsoft公式のUbuntu上に構築されたSQL Serverのコンテナが存在します。*1 現在、イメージの最新はSQL Server 2017なので、下記コマンドでダウンロードします。
docker image pull mcr.microsoft.com/mssql/server:2017-latest
ダウンロード完了後、イメージが存在することを確認します。
docker image ls
3. コンテナの生成と起動
SQL Serverのイメージから、コンテナの生成と起動を実施します。
<YourStrong@Passw0rd>には、8文字以上/大文字・小文字・数字・記号含む のパスワードを指定します。この規則に則ったパスワードを指定しないと、うまく起動しなかったです。
--nameにはコンテナを識別するための名称を指定します。 今回は”sql1”としています。
ユーザー名はデフォルトで"SA"となります。
docker container run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest
下記コマンドで、現在起動中のコンテナの情報が確認できます。
docker container ps
コマンドの実行結果を確認すると、イメージの名称や、コンテナの名称が確認できます。
4. SQL Serverを起動する
まずは、実行中のコンテナ内のbashシェルを起動します。
docker container exec -it sql1 "bash"
次に、SQL Serverを起動します。
"PASSWORD"には、コンテナ生成・起動時にコマンドに入力したパスワードを指定します。
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<PASSWORD>"
"1>"というプロンプトが表示されたら、起動成功です。
5. データベースの作成
新しいデータベースを作成します。 今回は「TestDB」という名前で作成します。
1> CREATE DATABASE TestDB 2> GO 1> USE TestDB 2> GO
コマンドを打っただけでは実行されないため、新しい行(上記だと"2>"の部分)に"GO"と入力する必要があります。
データベースの作成が完了したら、SQL Serverとbashからログアウトします。
1> QUIT
# exit
6. SQL Server Management Studioから接続
コンテナで起動中のSQL Serverに、ホスト端末のSQL Server Management Studio(以降SSMS)から接続します。
SSMSの接続設定は下記の通り。
項目 | 値 |
---|---|
サーバーの種類 | データベース エンジン |
サーバー名 | localhost |
ログイン | sa |
パスワード | 設定したパスワード |
サーバーへの接続画面で「接続」ボタンを押すと、SQL Serverへ接続されます。
コンテナ内で作成したデータベースが存在することが確認できます。
ここまでくれば、テーブルの作成やSQLの実行も思いのままです。
7. コンテナの停止・削除
最後に、起動中のコンテナの停止方法と、コンテナの削除方法を紹介します。
7.1. コンテナの停止
コンテナを停止するには、下記のコマンドを使用します。 "sql1"は停止したいコンテナのコンテナ名です。
docker container stop sql1
停止後、再度起動したいときは、下記コマンドを実行するとコンテナが再度起動します。
docker container start sql1
7.2. コンテナの削除
コンテナを削除するには、下記のコマンドを使用します。 "sql1"は削除したいコンテナのコンテナ名です。
docker container rm sql1
注意しないといけないのは、コンテナを削除してしまうと作成したテーブルなども削除されてしまうことです。
逆に、コンテナを削除すればテーブル含めすべて消える(=環境にゴミが残らない)ので気軽に環境構築が可能ということです。
8. まとめ
SQL Serverをコンテナ上で起動してみました。SSMSも使えるので、気軽にSQLの試し打ちとかできそうです。
参考
- クイック スタート: Docker を使用して SQL Server コンテナー イメージを実行する: docs.docker.com docs.microsoft.com