SQL Server を WSL 上の Docker コンテナで構築する自分用テンプレートです。
使用に関しては自己責任でお願いします。
Windows 環境の場合は以下の環境が必要です。
- OS: Windows 10 バージョン 2004 以降 (ビルド 19041 以降) または Windows 11
- WSL(Ubuntu)
- Docker
- メモリ制限 : 2GB 以上 ※
- Docker Compose
※ SQL Server の Docker Image は 2GB 以上が必須要件。
Microsoft SQL Server by Microsoft | Docker Hub
※ 環境構築手順は 環境構築メモ.md を参考。
-
WSL を起動し、このディレクトリへ入る。
$ cd mssql-with-docker
-
Docker を起動する。
- Win 環境へ Docker Desktop をインストールしていた場合、Windows のスタートメニュー等から Docker Desktop アプリを実行する。
- WSL 環境へ Docker を直接インストールしていた場合、 4. (補足)Docker デーモンの起動 セクションを参考に起動する。
-
Docker コンテナを
docker-compose.yml
を使用して起動する。# docker-compose.yml を使用してバックグラウンドで起動 $ sudo docker-compose up -d Creating network "mssql-with-docker_default" with the default driver Creating mssql-with-docker_db_1 ... done # '... done' が出力されれば OK
-
初めての実行の場合、公式 Docker イメージのプルから始まるのでしばらく待つ。
$ sudo docker-compose up -d Creating network "mssql-with-docker_default" with the default driver Creating volume "mssql-with-docker_db-volume" with default driver Pulling db (mcr.microsoft.com/mssql/server:2019-latest)... ... Status: Downloaded newer image for mcr.microsoft.com/mssql/server:2019-latest Creating mssql-with-docker_db_1 ... done # '... done' が出力されれば OK
-
-
Docker コンテナが起動中か確認する。
# 起動中のコンテナを確認 $ sudo docker ps CONTAINER ID IMAGE ... NAMES aaaaaaaaaaaa mcr.microsoft.com/mssql/server:2019-latest ... mssql-with-docker_db_1 # NAMES へ 'mssql-with-docker_db_1' が表示されていれば OK # 生成されたデータボリュームを確認 $ sudo docker volume ls DRIVER VOLUME NAME local mssql-with-docker_db-volume # 'mssql-with-docker_db-volume' が表示されていれば OK
-
作業方法に合わせて SQL Server の利用を開始する。
-
CLI から実行する場合:
- コンテナ内の sqlcmd を使ってログインする。
$ sudo docker exec -it mssql-with-docker_db_1 sqlcmd -S localhost -U SA -P 'パスワード' 1>
-
Azure Data Studio で接続して実行する場合:
- 画面左部のサーバー一覧から 環境構築メモ.md で作成したサーバーを選択する。
接続
ボタンをクリックし、接続ができたことを確認する。
-
-
sqlcmd または Azure Data Studio での接続を切断する。
-
起動中のコンテナを停止する。
$ sudo docker-compose stop Stopping mssql-with-docker_db_1 ... done
-
コンテナが起動中でないことを確認する。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # 何も表示されていない状態であれば OK
-
必要であれば Docker も終了する。
- Win 環境へ Docker Desktop をインストールしていた場合、Windows のタスクバー > Docker のアイコンを右クリック >
Quit Docker Desktop
を実行する。 - WSL 環境へ Docker を直接インストールしていた場合、 4. (補足)Docker デーモンの起動 セクションを参考に停止する。
- Win 環境へ Docker Desktop をインストールしていた場合、Windows のタスクバー > Docker のアイコンを右クリック >
WSL は立ち上げ時に Docker コマンドが受け付けられない状態となっている。
WSL は標準で Systemd に対応しておらず(※)、Docker の基盤プログラムである Docker デーモンが起動していないため。
# WSL 起動直後の状態で docker コマンドを実行
$ sudo docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
このため、service
コマンドを使って Docker デーモンを起動し、Docker コマンドが実行可能な状態にする。
※ Microsoft Store 版 v0.67.6 以降の WSL は Systemd に対応した そうなので、設定次第でこの手順もスキップできるかもしれません(未検証)。
# Docker デーモン(Docker の常駐プログラム)の起動状態を確認
$ sudo service docker status
* Docker is not running # 'is not running' と表示されていれば起動中ではない
# Docker デーモンを service コマンドで起動する
$ sudo service docker start
* Starting Docker: docker [ OK ]
# Docker デーモンの起動状態をもう一度確認
$ sudo service docker status
* Docker is running # 'is running' と表示されれば起動中である
# Docker デーモンの起動状態を確認
$ sudo service docker status
* Docker is running
# Docker デーモンを service コマンドで停止する
$ sudo service docker stop
* Stopping Docker: docker [ OK ]
# Docker デーモンの起動状態をもう一度確認
$ sudo service docker status
* Docker is not running
- WSL のインストール | Microsoft Docs
- Windows Terminal + WSL 2 + Homebrew + Zsh - Qiita
- windows10でVSCode+WSL2(Ubuntu)+Docker Desktopの開発環境を作る
- Docker Documentation | Docker Documentation
- Docker ドキュメント日本語化プロジェクト — Docker-docs-ja 20.10 ドキュメント
- Microsoft SQL Server - Ubuntu based images by Microsoft | Docker Hub
- ubuntu20.04にDockerとdocker-composeをインストールする
- Dockerのデータを永続化!Data Volume(データボリューム)の理解から始める環境構築入門 | Enjoy IT Life
- DockerでSQL Serverを建ててsqlcmd, SSMS, JDBCでアクセスする - DockerでSQL Serverを建ててsqlcmd, SSMS, JDBCでアクセスする - aegif Labo Blog Alfresco
- さわって理解するDocker入門 第6回 | オブジェクトの広場
- WindowsでDockerデーモンを自動起動させる方法をまとめてみる without Docker Desktop - Qiita