Skip to content

kenkenpa198/mssql-with-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published