SQL Server をmacOS, Docker上にインストールして実行
前段
そしてAzure SQLは世の中一般的なソリューションである.
クラウドはサーバー自体を論理化, 仮想化することで, 自動化, 管理工数を減らして便利にした.
一方で本質的なコア技術や基礎領域への理解が浅いままだと, 応用展開を行うことは難しい.
on premiseでSQL Serverを動かすことで理解を深めていく.
環境説明
構築元OS: macOS Catalina10.15.7
Docker version: 20.10.2
SQL Server: 2019-CU9-ubuntu-16.04
GUI tool: Azure Data Studio 1.25.3
Document
Linux 上の SQL Server
クイック スタート:Docker を使用して SQL Server コンテナー イメージを実行する
その他参考ブログ
手順
前提チェック
SQL Server on Linux のシステム要件の確認
https://gyazo.com/ed16e5338b1cf14a766c182d2d40c50b
Dockerのインストール
作業1. Docker image PULL & RUN
SQL Server on UbuntuのイメージをPULL
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
SQL Server をRUN
code:dockerRun
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=PasswordXXXX" \
-p 1433:1433 --name sqlsvver1 -h sqlsvver1 \
-d mcr.microsoft.com/mssql/server:2019-latest
Containerの状況確認
docker ps -a
code:cmd_result
~ % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa6104cc99b4 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 7 seconds ago Up 6 seconds 0.0.0.0:1433->1433/tcp sqlsvver1
SAアカウントのPassword変更
SAアカウントとは, SQL Server インスタンスのシステム管理者. 今回はやらない.
作業2. Dockerで立ち上げたコンテナサーバーに接続してみる
SQL Serverへの接続
実行中のコンテナー内で対話型の Bash シェルを開始
sudo docker exec -it sqlsvver1 "bash"
code:result
SQL Server内のbashへ入れた
mssql@sqlsvver1:/$
Container内のsqlcmdへ
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "PasswordXXXX"
新しいデータベース作成, データ挿入, データ選択, コマンドプロンプトの終了まで
Container外から接続
Client にsqlcmdをインストールしてcontainerへ接続する. 今回はやらない.
macへのインストールが手間なのと, 作業内容自体はcontainerで対応済みなので.
sqlcmd以外のコマンドラインツールは下記
作業3. Azure Data StudioからSQL Serverへ接続してみる
Document
他GUIツール
https://gyazo.com/08384ab788be17c7e0de8678ad9e7777
実作業
Azure Data Studio on macOSからSQL Server on unbutu in Docker on macOSへの接続を確認
https://gyazo.com/972bf2130ce7f7d95abd9c947a37d91b
作業4. 起動中のdocker containerを停止/再起動する
code: commnad
1. processを確認
docker ps -a
2. 停止
docker stop container_id
3. 再起動
docker restart container_id
memo
雑記
SQL Server on unbutu in Docker on macOS構築を行い, Database, table, data insertを実施した.
これまでの経験ではPostgresqlのみを使ってきたが, 大きく変わる部分はなかったかなっていう印象. SQL Serverへの接続方法は, 準備されているtoolレベルでもあるし, 実際にCLIからも実施ができた.