2017-06-05 1 views
2

私はUbuntu 14.04のDockerコンテナで.NET Core 1.1アプリケーションを実行しており、別のサーバーで実行されているSQL Serverデータベースに接続できません。Dockerコンテナで実行されているコードが別のサーバーのデータベースに接続できないのはなぜですか?

エラーは次のとおりです。

Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid)

  1. 私は別のUbuntu 14.04サーバー上の同じコマンドラインで同じ画像を展開している、そしてそれがうまく接続されています。
  2. 問題のサーバー(Docker外)で実行されているコンソールアプリケーションは、同じ接続文字列で接続できます。

ドキュメントからわかるように、コンテナ内で実行されているアプリケーションはデフォルトで外部ネットワークにアクセスできるため、この接続をブロックすることができますか?

答えて

3

an app running in a container has access to the external network by default

有効なIPアドレスがコンテナに割り当てられている場合のみアクセスできます。 Dockerがコンテナ用に選択したIPは、外部ネットワークと競合することがあります。

はデフォルトでは、コンテナはbridgeネットワークで実行するので、それを見て:

docker network inspect bridge 

は、コンテナを検索し、そのIPを確認してください。競合を解決する

、それはcustomizebridgeネットワークに可能であり、ネットワークのIP範囲(設定ファイルの場所は、ホストのOSに依存します)に変更しbipのパラメータを設定します。

"bip": "192.168.1.5/24" 

それともcreate新しいドッキングウィンドウのネットワークを。

それとも実験net=hostオプション付き:docker run network settings

+1

ありがとう!私は 'bip' IPアドレスをオーバーライドする必要はありませんでしたが、あなたの情報は、私が必要とする解決策を指摘しました。これは'/etc/docker/daemon.json'を作成/編集し、その環境にDNSサーバを指定することでした。 Dockerアプリケーションは、そのdbサーバーを見つけて接続します。ブリッジネットワークのカスタマイズに関する詳細は、あなたのリンクにあります。 – Peter

関連する問題