さくらのクラウドがWindows Server 2016の提供を開始したそうなので早速サーバを作ってWindows コンテナーでDockerしてみました。
さくらのクラウドにおける「Windows Server 2016」の提供開始について
サーバの作成自体はこれまで同じく、リモートコンソールから利用規約に同意しAdministratorのパスワードを設定して終わり。
作成が完了したWindows Serverに対してリモートデスクトップで接続したらここからの作業はPowershell上行っていきます。
Windows上でDockerを使うための準備
まずはPowershellのためのパッケージ管理用のモジュールのインストール
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
これが完了したら最新のDockerをインストールします。
Install-Package -Name docker -ProviderName DockerMsftProvider
インストール完了したらここで一旦サーバの再起動を行います。
ただ、仮想環境なので再起動早い!
再度リモートデスクトップで接続し、再度PowerShellを起動します。
試しにdockerと入力してどのように表示されるかを確認してみましょう。
ちゃんとDockerコマンドが認識されています!
SQL Server for Windows コンテナを利用するための準備
さて、今度はSQL Serverのコンテナを準備します。
Microsoftが公式にDocker hubに公開しているものを活用します。
microsoft/mssql-server-windows
具体的にはこのコマンド
docker run -d -p 1433:1433 -e sa_password=****** -e ACCEPT_EULA=Y microsoft/mssql-server-windows
ちなみにファイルサイズは12GB位あるので気長に待ちます。
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
microsoft/mssql-server-windows latest 307f05c5da18 3 weeks ago 12.8 GB
SQL Server Management Studioのインストール
この待ち時間にSQL Server Management Studio (SSMS)をインストールしておきましょう。最近はSQL Server本体とは独立してSSMSだけでもアップデートされるようになったんですね。
SQL Server Management Studio (SSMS) のダウンロード
コンテナに接続するための準備
さて、SQL Serverのコンテナのダウンロードが完了し実行状態になっているかと思います。
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
60ac2328f725 microsoft/mssql-server-windows "cmd /S /C 'powers..." About an hour ago Up About an hour 0.0.0.0:1433->1433/tcp grave_feynman
ではここにSSMSで接続。。。。しようと思ってもできません。
※私のやり方悪いだけできっと正しい方法はあると思います。教えてくださいm(_ _)m
SSMSで接続するためにコンテナに割り当てられているIPアドレスを確認する必要があります。
> docker exec -it 60ac2328f725 powershell
60ac2328f725
は上記docker psで確認したコンテナIDです。
するとちょっと配色のおかしなPowerShellの画面が表示差れます。
ipconfig
コマンドでIPv4を確認します。
今回であれば 172.20.194.39
が割り当てられていることが確認できました。
SSMSからコンテナ内のSQL Serverへの接続
先程インストールしたSSMSに戻って実際にDockerコンテナ上のSQL Serverに接続をしてみます。
確認したIPアドレスをサーバ名にインストールして、SQL Server認証でログインにsa
を設定し、コンテナ起動時に設定したパスワードを入力します。
無事コンテナ上で動作しているSQL Serverに接続できました。
コンテナのサイズは巨大ですが都度インストールなどの手間を考えれば随分楽。Dockerを動かしているWindows Server 2016のデータベースファイルを参照させることもできるみたいですので、活用の幅広がりそう!