DockerでSQLServer2017の仮想環境を構築する

# 背景
50代〜の営業さんたちが使用するシステムがIEで、その運用をすることになった。
ひとまず自分の環境で動かせるよう、Macにdockerを使ってSQLServerの仮想環境を作る手順をざっくり備忘録。

# 手順
### 1.Dockerのインストール
https://store.docker.com/editions/community/docker-ce-desktop-mac
<img width="1166" alt="スクリーンショット 2018-04-19 17.50.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/6c16ef7f-a410-4082-ab7e-78108d9f5a0e.png">
インストール後に以下のコマンドをターミナルで

    $ docker -v

と打ち込んで、
<img width="334" alt="スクリーンショット 2018-04-19 18.10.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/15f2a49b-c522-a534-c641-0bed4b2f0b18.png">
とバージョンが出ればインストール、動作確認完了。

出ない場合はdockerが動いてない場合があるため、
PCを再起動してmac右上にクジラが表示されていればdockerが起動している状態を確認できる。
<img width="331" alt="スクリーンショット 2018-04-19 18.42.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/4621d539-1b31-3b63-20d2-df2e81697857.png">

ちなみにwindowsでのインストールリンクは以下。
https://store.docker.com/editions/community/docker-ce-desktop-windows

### 2.Docker HubからSQLServer2017 Linux コンテナイメージをプル
以下のコマンドをターミナルで入力。

    $ docker pull microsoft/mssql-server-linux:2017-latest

なんやかんや勝手に動いた後に以下のコマンド（dockerのイメージ一覧を確認するコマンド）を入力。

    $ docker images

結果として以下のような物が表示されればイメージ取得成功。
<img width="817" alt="スクリーンショット 2018-04-19 18.56.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/1a7b14d9-d974-e0a1-a523-5c8dccc62b39.png">

### 3.コンテナを起動する
以下のコマンドをターミナルで入力するとコンテナが（作成）起動される。

    $ docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest

起動確認は以下のコマンドを入力。

    $ docker ps -a

以下が表示されれば起動されている。
<img width="1275" alt="スクリーンショット 2018-04-19 19.47.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/cc84f405-9274-f544-7244-728193f39345.png">

### 4.コンテナを実行してSQLServerのパスワードを変更
以下のコマンドをターミナルに入力してパスワードを変更。

    $ docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourStrong!Passw0rd>' -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong!Passw0rd>"'

※上記コマンドのsql1の所はコンテナ名
※```<YourStrong!Passw0rd>```から```<YourNewStrong!Passw0rd>```にパスワードを変更

### 5.コンテナを新しいパスワードで実行する。
以下のコマンドをターミナルに入力。

    $ docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'

結果として以下が表示されればSQLを叩くことができる。
<img width="54" alt="スクリーンショット 2018-04-19 21.44.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/0547c207-29e7-d35c-aabc-3fcf363d1024.png">

### 6.SQLServerを動貸せることを確認
以下のようにSQLServerのコマンドを試したところ、実行できる。
<img width="1080" alt="スクリーンショット 2018-04-19 22.31.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/fcf39fa2-9763-1526-e9bb-687ae377cc2f.png">

    QUIT

上記コマンドでSQLServerから戻る。

### 7.コンテナの停止
以下のコマンドをターミナルに入力。

    $ docker stop sql1

状態を以下のコマンドで確認。

    $ docker ps -a

以下のようなステータスになっていればコンテナが停止している状態。
<img width="1273" alt="スクリーンショット 2018-04-19 22.39.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/d45f8275-3eb1-30d1-521e-e4893f50af8c.png">

再スタートの場合は以下のコマンドでコンテナが立ち上がる。

    $ docker start sql1

### 8.コンテナの削除
◆削除するとDBのデータが無くなってしまうので注意◆

以下のコマンドをターミナルに入力。

    $ docker rm <コンテナID>

※edaの部分は「CONTAINER ID」のこと（一つ上のスクショ参照）

状態を以下のコマンドで確認。

    $ docker ps -a

以下のようにコンテナが表示されなければ、コンテナが削除された状態。
<img width="1093" alt="スクリーンショット 2018-04-19 22.44.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/6d58f5ac-e55d-c0c9-f109-88674e11d7b5.png">

### 9.imageの削除
以下のコマンドをターミナルに入力。

    $ docker rmi <イメージID>

<img width="817" alt="スクリーンショット 2018-04-19 18.56.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/153841/1a7b14d9-d974-e0a1-a523-5c8dccc62b39.png">

確認したい場合は以下のコマンドをターミナルに入力。

    $ docker images

上記コマンドでイメージが残っていなければ削除されていることが確認できる。


## 参考
https://qiita.com/Qiita/items/c686397e4a0f4f11683d
https://qiita.com/consolesoup/items/37241ee79501523fb49e
https://qiita.com/n-yamanaka/items/ddb18943f5e43ca5ac2e
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker


# おわりに
はじめてQiitaに投稿してみました！結構めんどくさいw
他の記事書かれてる方を尊敬いたします！
（´-`）.｡oO（自分もマイペースに頑張ろう...）