Skip to content

Latest commit

 

History

History
187 lines (139 loc) · 8.45 KB

README.md

File metadata and controls

187 lines (139 loc) · 8.45 KB

mssql-with-docker

SQL Server を WSL 上の Docker コンテナで構築する自分用テンプレートです。
使用に関しては自己責任でお願いします。

目次

1. 必要な環境

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 を参考。

2. 作業を開始する

  1. WSL を起動し、このディレクトリへ入る。

    $ cd mssql-with-docker
  2. Docker を起動する。

    1. Win 環境へ Docker Desktop をインストールしていた場合、Windows のスタートメニュー等から Docker Desktop アプリを実行する。
    2. WSL 環境へ Docker を直接インストールしていた場合、 4. (補足)Docker デーモンの起動 セクションを参考に起動する。
  3. 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
    1. 初めての実行の場合、公式 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
  4. 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
  5. 作業方法に合わせて SQL Server の利用を開始する。

    1. CLI から実行する場合:

      1. コンテナ内の sqlcmd を使ってログインする。
      $ sudo docker exec -it mssql-with-docker_db_1 sqlcmd -S localhost -U SA -P 'パスワード'
      1>
    2. Azure Data Studio で接続して実行する場合:

      1. 画面左部のサーバー一覧から 環境構築メモ.md で作成したサーバーを選択する。
      2. 接続 ボタンをクリックし、接続ができたことを確認する。

3. 作業を終了する

  1. sqlcmd または Azure Data Studio での接続を切断する。

  2. 起動中のコンテナを停止する。

    $ sudo docker-compose stop
    Stopping mssql-with-docker_db_1 ... done
  3. コンテナが起動中でないことを確認する。

    $ docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    
    # 何も表示されていない状態であれば OK
  4. 必要であれば Docker も終了する。

    1. Win 環境へ Docker Desktop をインストールしていた場合、Windows のタスクバー > Docker のアイコンを右クリック > Quit Docker Desktop を実行する。
    2. WSL 環境へ Docker を直接インストールしていた場合、 4. (補足)Docker デーモンの起動 セクションを参考に停止する。

4. (補足)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 に対応した そうなので、設定次第でこの手順もスキップできるかもしれません(未検証)。

4.1. デーモンを起動する

# 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' と表示されれば起動中である

4.2. デーモンを停止する

# 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

5. 参考文献

5.1. WSL

5.2. Docker

5.3. Azure Data Studio