DockerでSQL Serverの開発環境を構築する方法【Docker Compose対応】

当ページのリンクには広告が含まれています。
DockerとSQL Server、Docker Composeで開発環境を構築・接続するイメージ

SQL Serverの開発環境ってインストーラーを走らせて、ライセンスを確認して……と、セットアップが面倒ですよね。しかもいざ構築したら「OSの設定が汚れた」「別PCで再現できない」なんて悩みも出てきます。

そんな面倒を丸ごと解決してくれるのがDockerです。コマンド数行でSQL Serverのコンテナが起動し、不要になったら跡形もなく消せます。

この記事ではDocker初心者の方に向けてSQL Serverの開発環境をDockerで構築する手順を解説します。

検証環境(確認日:2026年8月)
OS

Windows 11 Home 25H2

CPU

AMD Ryzen 7 9700X

Docker Desktop

4.87.0 (236836)

Engine

29.7.2

Compose

v5.4.0

目次

DockerならSQL Serverの開発環境は5分で作れる

本記事で作る開発用SQL Server環境

本記事では以下の環境を構築します。ローカルの開発・検証用途にちょうどよい最小構成を目指します。

項目内容
SQL ServerバージョンSQL Server 2022(2022-latest)
エディションDeveloper Edition(無償)
接続ポート1433
データ永続化Dockerボリューム使用
推奨構築方法Docker Compose

SQL Serverの最新メジャーバージョンは2025です。本記事ではSQL Server 2022を使って構築します。2022-latestはSQL Server 2022系列の最新コンテナーイメージを示します。SQL Server 2025を使う場合は後述するイメージタグを2025-latestへ変更してください。

DockerでSQL Serverを構築するメリット

Dockerを使う理由を簡単に整理しておきましょう。

  • 環境をすぐ作れる
    コマンド数行でSQL Serverが起動します。インストーラーのウィザードをポチポチ進める必要はありません。
  • OSを汚さない
    SQL ServerはDockerコンテナの中で動くのでホストPC(あなたのMacやWindowsマシン)の環境には一切手を加えません。「レジストリがごちゃごちゃした」「アンインストールしても残骸が残る」といった心配が不要です。
  • 削除も簡単
    コンテナとイメージを消すだけでSQL Serverごとなかったことにできます。クリーンな状態に戻すのが非常に楽です。

Dockerを使うメリットをもう少し詳しく知りたい方は開発環境をDocker化する理由もあわせて確認しておくと理解しやすいです。

DockerでSQL Serverを動かす前に知っておきたいこと

SQL ServerのDockerイメージについて

Microsoft公式のSQL Server向けDockerイメージはDocker HubおよびMicrosoft Container Registry(MCR)で公開されています。

タグ(バージョン)の指定形式は2022-latest、2019-latestのようになっています。

開発用途なら「Developer Edition」で十分

SQL Serverにはいくつかのエディションがあります。開発・テスト目的であればDeveloper Editionが最適です。

エディション費用用途
Developer無償開発・テスト用(本番利用不可)
Express無償小規模本番・学習用(機能制限あり)
Standard / Enterprise有償本番環境向け

コンテナ起動時に環境変数MSSQL_PID=Developerを指定することでDeveloper Editionとして動作します。

macOSでの注意点(重要)

Apple Silicon(M1/M2/M3/M4)環境

SQL ServerのDockerイメージはx86_64(AMD64)アーキテクチャ向けに提供されています。Apple SiliconのMacはARMアーキテクチャのためそのままでは動作しません。

Rosettaによるエミュレーション

Docker Desktop for MacにはRosetta(ローゼッタ)エミュレーションの機能があり、これを有効にすることでAMD64向けイメージをApple Siliconで動作可能になります。

設定箇所:Docker Desktop → Settings → General → 「Use Rosetta for x86_64/amd64 emulation on Apple Silicon」をONにする

Docker DesktopでApple Virtualization frameworkを選びRosettaを有効にした設定画面
Docker DesktopでApple Virtualization frameworkを選び、Rosettaエミュレーションを有効にした状態

またdocker-compose.yamlまたはdocker runコマンドにplatform: linux/amd64の指定が必要です(後述)。

Apple Silicon環境でもRosetta経由で動作するケースがありますが、Microsoft公式ではエミュレーション環境(Rosetta 2 / QEMU等)はサポート対象外です。
Docker: SQL Server on Linux 用のコンテナーを実行する – SQL Server | Microsoft Learn

パフォーマンスの注意点: Rosettaエミュレーションを使うとネイティブ動作と比べてパフォーマンスが落ちる場合があります。

最小構成でSQL Serverコンテナを起動する(docker run)

SQL Serverコンテナを起動するコマンド

まずはシンプルにdocker runコマンドでSQL Serverを起動してみましょう。

コマンド
docker run -e "ACCEPT_EULA=Y" \
  -e "MSSQL_SA_PASSWORD=【SAパスワード】" \
  -e "MSSQL_PID=Developer" \
  -p 1433:1433 \
  --name sqlserver-dev \
  -d mcr.microsoft.com/mssql/server:2022-latest

Apple Silicon(M1、M2…)のMacを使っている場合は先頭に--platform linux/amd64を追加してください。

コマンド – Apple Silicon用
docker run --platform linux/amd64 \
  -e "ACCEPT_EULA=Y" \
  -e "MSSQL_SA_PASSWORD=【SAパスワード】" \
  -e "MSSQL_PID=Developer" \
  -p 1433:1433 \
  --name sqlserver-dev \
  -d mcr.microsoft.com/mssql/server:2022-latest

各オプションの意味

  • -p 1433:1433
    ホストのポート:コンテナのポートという書き方です。1433はSQL Serverのデフォルトポートです。ホスト側のポートを変えたい場合は左の数字だけ変更します(例:-p 11433:1433)。
  • MSSQL_SA_PASSWORD
    saはSQL Serverの最高権限管理者アカウントです。パスワードは8文字以上で、大文字・小文字・数字・記号の4種類のうち3種類以上を含める必要があります。
  • ACCEPT_EULA=Y
    MicrosoftのEnd User License Agreement(使用許諾契約)に同意することを示す指定です。Y を指定しないとコンテナが起動しません。
  • –name
    コンテナに名前をつけることで後からdocker stop sqlserver-devのように名前で操作できるようになります。省略するとランダムな名前が割り当てられます。

コンテナが起動しているか確認する

起動後は以下のコマンドでコンテナの状態を確認します。

コマンド
docker ps
出力例
CONTAINER ID   IMAGE                                        STATUS         PORTS                    NAMES
xxxxxxxxxxxx   mcr.microsoft.com/mssql/server:2022-latest  Up 30 seconds  0.0.0.0:1433->1433/tcp   sqlserver-dev

STATUS列がUpになっていれば起動成功です。

Docker ComposeでSQL Serverを構築する(おすすめ)

docker runコマンドは手軽ですがオプションが増えると管理が大変になります。Docker Composeを使えば設定をファイルで管理でき、チームへの共有も簡単です。実際の開発現場でもこちらがよく使われます。

docker-compose.yaml の最小構成

プロジェクトのルートディレクトリにdocker-compose.yamlを作成し以下の内容を貼り付けてください。

docker-compose.yaml
services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2022-latest
    platform: linux/amd64   # Apple Siliconの場合は必須、Windowsは削除してもOK
    container_name: sqlserver-dev
    ports:
      - "1433:1433"
    environment:
      ACCEPT_EULA: "Y"
      MSSQL_SA_PASSWORD: "【SAパスワード】"
      MSSQL_PID: "Developer"
    volumes:
      - sqlserver_data:/var/opt/mssql

volumes:
  sqlserver_data:

各設定項目を初心者向けに解説

  • image
    使用するDockerイメージを指定します。mcr.microsoft.com/mssql/server:2022-latestでSQL Server 2022系列の最新コンテナーイメージを使用します。
  • container_name
    コンテナに固定の名前をつけます。docker stop sqlserver-devのように名前で操作できます。
  • ports
    "ホストポート:コンテナポート"の形式で指定します。"1433:1433"でホストPCの1433番ポートをコンテナに繋ぎます。
  • environment
    ACCEPT_EULAとMSSQL_SA_PASSWORDは初回起動に必要です。MSSQL_PIDは使用するエディションを明示するために指定しています。
  • volumes
    データをホストPC側に保存するための設定です。コンテナを削除してもデータが消えなくなります(詳細は後述)。

Docker ComposeでSQL Serverを起動する

docker-compose.yamlがあるディレクトリで以下のコマンドを実行します。

コマンド
docker compose up -d

-dはバックグラウンド起動のオプションです。これがないとターミナルを閉じるとコンテナも止まってしまいます。

起動確認はdocker psで行えます。

SQL Serverに接続する方法

コンテナ内から接続する(sqlcmd)

コンテナの中に入ってsqlcmdコマンドで接続する方法です。GUIツールがなくても動作確認できるので覚えておくと便利です。

コマンド – コンテナに入る
docker exec -it sqlserver-dev bash
コマンド – sqlcmdで接続
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "【SAパスワード】" -No

接続後に1>というプロンプトが表示されれば成功です。SQL文を入力して GO と打つと実行されます。

SQL
SELECT @@VERSION
GO

exitと入力するとコンテナから抜けられます。

接続情報まとめ

項目値
ホストlocalhost(または 127.0.0.1)
ポート1433
ユーザーsa
パスワード設定した【SAパスワード】
認証方式SQL Server認証

WindowsではA5:SQL Mk-2、Windows・macOS・LinuxではDBeaverを利用できます。どちらもSQLの入力補完やデータの確認に使えるGUIツールです。

データを永続化する(コンテナ削除でDBが消えないようにする)

volumesを使ったデータ永続化

Dockerコンテナはデフォルトでは使い捨てです。コンテナを削除するとその中のデータ(作成したDBやテーブル)も一緒に消えてしまいます。

これを防ぐのがDockerボリュームです。先ほどのdocker-compose.yamlに含めたvolumesの設定がこれにあたります。

docker-compose.yaml – volumesの設定部分
volumes:
  - sqlserver_data:/var/opt/mssql

/var/opt/mssql はSQL Serverがデータファイルを保存するコンテナ内のパスです。これをDockerが管理するボリューム(sqlserver_data)に紐付けることでコンテナが消えてもデータは残り続けます。

ボリュームの一覧は以下で確認できます。

コマンド
docker volume ls

永続化しない場合に起きる問題

volumesの設定をせずにコンテナを削除すると作成したデータベース・テーブル・データがすべて消えます。

「昨日まで入れていたテストデータが消えた!」という悲劇を避けるためにも開発環境であってもvolumesの設定は最初から入れておくことをおすすめします。

開発用SQL Serverコンテナの基本操作

コンテナの停止

コンテナを停止しますが削除はしません。次回docker compose startで再起動できます。

コマンド
docker compose stop

コンテナの再起動

コンテナを再起動します。設定変更後などに使います。

コマンド
docker compose restart

コンテナの削除

コマンド
docker compose down

コンテナを停止して削除します。ボリュームは残りますのでデータは消えません。

ボリュームごと削除

ボリュームごと完全に削除したい場合は-vオプションをつけます。

コマンド
docker compose down -v

よくあるトラブルと解決方法

SQL Serverが起動しない

まずdocker logsでコンテナのログを確認します。

コマンド
docker logs sqlserver-dev

エラーメッセージから原因を特定できることが多いです。よくある原因は以下の2つです。

  • パスワードがポリシーを満たしていない(次項参照)
  • ポート1433がすでに別プロセスに使われている → portsの左側の数字を変更する(例:11433:1433)

WindowsでSQL Serverの1433番ポートへ接続できるか確認したい場合はPowerShellのTest-NetConnectionを使う方法が参考になります。

SAパスワードのポリシーエラー

docker logsに以下のようなメッセージが出ている場合はパスワードが複雑さポリシーを満たしていません。

ERROR: Unable to set system administrator password

SQL Serverのデフォルトのパスワードポリシーでは、次の条件を満たす必要があります。

  • 8文字以上
  • 大文字・小文字・数字・記号の4種類のうち3種類以上を含む

YourStrong!Passw0rdはこれを満たすサンプルとして公式でも紹介されています。参考にしてください。なのでいろんなトコロで使われているかも……

macOS(Apple Silicon)で起動できない場合

以下の点を確認してください。

  • Docker Desktop の Rosetta エミュレーション設定がONになっているか
  • docker-compose.yamlにplatform: linux/amd64の指定があるか
  • それでも起動しない場合は Docker Desktop を最新版にアップデートしてみる

Q&A

Developer Editionは本番環境で使える?

使えません。Developer Editionは開発・テスト専用です。本番環境では要件とライセンスに合うエディションを選びます。小規模な用途では無償のExpress Editionを利用できる場合もあります。

SQL Server 2025を使うには?

docker runまたはdocker-compose.yamlのイメージをmcr.microsoft.com/mssql/server:2025-latestへ変更します。本記事はSQL Server 2022を例にしているため、プロジェクトや接続先との互換性を確認してバージョンを選んでください。

ポート番号1433は変えられる?

変えられます。portsの左側の数字(ホスト側のポート)を変えるだけです。例えば"11433:1433"にすればホストPCからはポート11433で接続します。接続ツール側のポート番号設定も合わせて変更してください。

docker-compose.yamlのパスワードをそのまま使っていい?

開発環境であれば動作上は問題ありません。ただしGitHubなどに公開するリポジトリにパスワードをそのまま書くのは避けてください。.envファイルに切り出してGitの管理対象から外す運用がおすすめです。

他のDBでも同じようにDockerで構築できる?

できます。PostgreSQLでも同様の手順でDocker Compose環境を構築できますよ。以下で解説しています。


SQL Server以外のDB環境構築やSQL関連記事も見たい方はデータベース関連記事のまとめから確認できます。

まとめ:Dockerを使えばSQL Serverの開発環境は一瞬で作れる

  • DockerならSQL Serverをコマンド数行で起動できて環境構築は数分で終わるよ。
  • docker runでもいいけど設定をファイルで管理できる Docker Compose が断然おすすめだよ。
  • volumesの設定を入れておけばコンテナを削除してもデータは消えないよ。
  • macOS(Apple Silicon)ではplatform: linux/amd64と Rosetta設定が必須だよ。
  • パスワードをそのままGitにコミットするのは避けて.envファイルに切り出してね。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次