Windows用のDockerを使用したLinuxコンテナ上でのSQL Serverの実行

2566 ワード

最近、私はすべての大騒ぎがDockerについて調査しています、そして、Dockerがものを自動化するのに非常にものすごいので、それは私の時間の価値がありました.
開発環境にはSQL Serverのインストールが一般的です.SQLは、オプションの多くの獣のビットであり、どのように設定する時間がかかります.
しかし、マイクロソフトは現在Linuxで動作するSQL Serverのバージョンを作成しているので、LinuxコンテナでSQL Serverを実行することができます.
私はあなたが既に開発マシンにインストールされたWindows用のDockerを持っていると仮定します.Dockerに頭がなければ、どのようにして下さい.
LinuxコンテナのSQLサーバを設定するマイクロソフトガイドはhereである.
まず、画像をダウンロードする必要があります.「パワーシェル」ウィンドウで実行します.
docker pull mcr.microsoft.com/mssql/server:2017-latest

これは最新のSQL Serverイメージをダウンロードします.
このイメージを実行するには、次の手順を実行します
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=password"
-p 1433:1433 --name sql
-d mcr.microsoft.com/mssql/server:2017-latest

SQL Serverイメージを実行するには、条件と条件を受け入れ、デフォルトのSAパスワードを設定する必要があります.これらは- eフラグで環境変数として追加されます.
また、コンテナーが実行するポートを設定する必要があります(1433はデフォルトのSQLポートです)、コンテナの名前を指定します.
既にSQL Serverをインストールしている場合は、ローカルインストールと同じポートにコンテナを実行できません.これを解決するために別のポートを選択できます.
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=password" 
-p 1434:1433 --name sql
-d mcr.microsoft.com/mssql/server:2017-latest

- P 1434 : 1433コンテナの1433ポートをローカル環境のポート1434にマップします.
このコマンドを実行すると、SQL Server Management Studio(SSM)を(ローカル)または(ローカル)に接続できます.
あなたの開発環境がWindows認証を必要とするならば、これはもちろんあなたのためでありません.
私が使用している開発環境では、様々なPowerShellスクリプトを設定します.これらはWindows authを仮定します.しかし、私はカスタム資格を取るように彼らを適応させました.
$credential = Get-Credential $server.ConnectionContext.LoginSecure=$false 
$server.ConnectionContext.set_Login($credential.UserName) 
$server.ConnectionContext.set_SecurePassword($credential.Password)

get credentityコマンドはSQL資格情報を入力できるダイアログを作成します.
どのように、私は私の容器にバックアップファイルを元に戻しますか?
実行:
docker exec -it sql mkdir /var/opt/mssql/backup
docker cp database.bak sql:/var/opt/mssql/backup

これはバックアップフォルダを作成し、ローカル環境からバックアップファイルをコンテナにコピーします.その後、管理ファイルを使用してバックアップファイルを復元することができます(または、それを行うには、SQLスクリプトを書くことができます).データベースを復旧する際に注意すべきことは、ファイルがWindowsの場所ではなくLinuxの場所に復元されることを確認することです.
私がこれまで遭遇した唯一の問題は、SSISパッケージのサポートの欠如とWindows authではありません.私はまだこれらのオプションのいくつかで動作する可能性がありますまだ試していないSQL ServerのWindowsイメージがあります.