1

私は、Windows コンテナーを介して Windows Server 2016 TP5 で SQL Server 2014 Express を実行できるように取り組んできました。

こちらのガイドラインに従った後、Sql Server Express でコンテナーを開始し、データベースをアタッチすることができます。

私の完全なdocker runコマンド:

docker run -p 1433:1433 -v C:/temp/:C:/temp/ --env sa_password=xxxx --env attach_dbs="[{'dbName': 'Docker', 'dbFiles': ['C:\\temp\\Docker.mdf', 'C:\\temp\\Docker_log.ldf']}]" microsoft/msslq-server-2014-express-windows

ただし、ホスト VM (Server 2016) 上の SSMS をコンテナーの SQL Server Express インスタンスに接続しようとすると、どの部分が欠けているのかわかりません。

コマンドで SQL Server の既定のポート (1433) を使用していますdocker run

ホスト VM の Docker バージョンは次のとおりです。1.12.1, build 23cf638

Window Server 2016 TP5 ビルドは次のとおりです。14300.rs1_release_sv.160907-0755

実行すると、コンテナーで 1433 がリッスンされているが、ホスト VM で 1433 がリッスンされてnetstat -aないことが確認されます。

コンテナーの実行docker ps中に実行すると、ポート 1433 が次のようにマップされていることが確認されます。0.0.0.0:1433->1433/tcp

ホスト VM 上の SSMS 経由でコンテナー内の SQL Server インスタンスに接続するには、saユーザーを使用し、次の PowerShell で取得したコンテナーの内部 IP アドレスでパスワードを設定します。

docker inspect --format "{{ .NetworkSettings.Networks.nat.IPAddress }}" <containerid>

残念ながら、SSMS はインスタンスを見つけることができず、何が間違っているのかわかりません。

4

2 に答える 2

2

ホスト VM から接続するときに、ポートと IP を指定する必要があることがわかりました。デフォルトのSQLサーバーポートを使用しているので、そうする必要はないと思いました。

次のコマンドでコンテナー IP を取得します。

docker inspect --format "{{ .NetworkSettings.Networks.nat.IPAddress }}" <containerid>

サーバー名: "ip","port"\"instancename" が機能し、ホスト VM で sqlcmd と SSMS の両方にアクセスできました。

于 2016-09-22T13:18:44.350 に答える
0

この docker の IP アドレスを設定して、この docker との接続を試みることができます。

docker run -p 192.168.0.2:1433:1433 -v C:/temp/:C:/temp/ --env sa_password=xxxx --env attach_dbs="[{'dbName': 'Docker', 'dbFiles': ['C:\\temp\\Docker.mdf', 'C:\\temp\\Docker_log.ldf']}]" microsoft/msslq-server-2014-express-windows

または、システムに適した任意の IP アドレス。このアドレスを使用して接続できるようになりました。

于 2016-09-22T05:20:04.510 に答える