簡體   English   中英

如何從Docker容器訪問SQL Server?

[英]How to access SQL Server from docker container?

我現在正在通過.net Framework 4.6.1使用MVC5應用程序,並且正在使用Windows容器。 要求之一是為應用程序創建docker映像。 我成功提取了microsoft / aspnet:4.6.2映像,並在容器中部署了Web應用程序。 Dockerfile中,我添加了“ EXPOSE 1433”,以確保SQL Server可以通過此端口訪問主機。 問題出在SQL連接上。 建立的連接導致以下錯誤:

System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

我應該提到,連接字符串已啟用了Integration Security 我嘗試設置應用程序池標識:

Set-ItemProperty IIS:\AppPools\DefaultAppPool\ -Name processModel -Value @{username='domain\user';password='somepassword';identityType=3 }

不幸的 ,由於已停止的應用程序池,這將導致“ HTTP錯誤503。服務不可用 ”。 我檢查了Windows事件存儲,發現了三個事件:

應用程序池DefaultAppPool已被禁用。 Windows進程激活服務(WAS)在啟動工作進程為應用程序池提供服務時遇到故障。

應用程序池DefaultAppPool已被禁用。 Windows進程激活服務(WAS)未創建工作進程來為應用程序池提供服務,因為應用程序池標識無效。

應用程序池DefaultAppPool的標識無效。 為該身份指定的用戶名或密碼可能不正確,或者該用戶可能沒有批量登錄權限。 如果標識不正確,則當應用程序池收到其第一個請求時,將禁用該應用程序池。 如果批處理登錄權限引起了問題,則必須在授予權限后更改IIS配置存儲中的標識,然后Windows Process Activation Service(WAS)才能重試登錄。 如果在處理對應用程序池的第一個請求之后身份仍然無效,則將禁用該應用程序池。 數據字段包含錯誤號

我已經檢查過憑據,它們是正確的。 我的想法是容器具有自己的私有域。 這就是為什么我無法連接到SqlServer的原因。 研究我找到了這篇文章

有沒有人嘗試在Docker容器中配置Active Directory? 您如何解決SQL連接問題?

如果要在容器內使用集成的Windows身份驗證,則需要使用GMSA帳戶。 Google或在這里查看我的博客( https://github.com/artisticcheese/artisticcheesecontainer/wiki

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM