如何在基于 windows 服务器核心的 docker 映像中安装 ODBC 驱动程序 17?
How to install ODBC Driver 17 in a docker image based on windows server core?
我正在为我的应用程序设置一个新的 docker windows 服务器核心映像。数据访问使用 ODBC Driver 17 for SQL Server。我需要在图像上安装它,所以在我的 Dockerfile
中包含以下内容:
FROM mcr.microsoft.com/windows/servercore:ltsc2016
COPY msodbcsql_17.3.1.1_x64.msi c:\msodbcsql_17.3.1.1_x64.msi
RUN msiexec.exe /i C:\msodbcsql_17.3.1.1_x64.msi /norestart /qn IACCEPTMSODBCSQLLICENSETERMS=YES
...
当我 运行 docker build...
我得到以下错误
The command 'cmd /S /C msiexec.exe /i C:\msodbcsql_17.3.1.1_x64.msi /norestart /qn IACCEPTMSODBCSQLLICENSETERMS=YES' returned a non-zero code: 1603
代码1603
表示需要重新启动。
我不确定如何重新启动图像。我该如何进行呢?没有驱动程序,我将无法获得我的应用程序 运行ning.
所以我 运行 在启用日志记录的容器中手动添加 MSI。事实证明,失败是由于缺少 VC++ 可再发行组件而发生的。
因此,我通过添加一行来更新 Dockerfile
来复制和安装 vc_redist.x64.exe
,这为我解决了问题。
Dockerfile
中的片段为我解决了问题。
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2
COPY vc_redist.x64.exe c:/ \
msodbcsql_17.3.1.1_x64.msi c:/
RUN c:\vc_redist.x64.exe /install /passive /norestart
RUN msiexec.exe /i C:\msodbcsql_17.3.1.1_x64.msi /norestart /qn /quiet /passive IACCEPTMSODBCSQLLICENSETERMS=YES
...
只要在这里发布这个答案,以防其他人偶然发现同样的问题。
我正在为我的应用程序设置一个新的 docker windows 服务器核心映像。数据访问使用 ODBC Driver 17 for SQL Server。我需要在图像上安装它,所以在我的 Dockerfile
中包含以下内容:
FROM mcr.microsoft.com/windows/servercore:ltsc2016
COPY msodbcsql_17.3.1.1_x64.msi c:\msodbcsql_17.3.1.1_x64.msi
RUN msiexec.exe /i C:\msodbcsql_17.3.1.1_x64.msi /norestart /qn IACCEPTMSODBCSQLLICENSETERMS=YES
...
当我 运行 docker build...
我得到以下错误
The command 'cmd /S /C msiexec.exe /i C:\msodbcsql_17.3.1.1_x64.msi /norestart /qn IACCEPTMSODBCSQLLICENSETERMS=YES' returned a non-zero code: 1603
代码1603
表示需要重新启动。
我不确定如何重新启动图像。我该如何进行呢?没有驱动程序,我将无法获得我的应用程序 运行ning.
所以我 运行 在启用日志记录的容器中手动添加 MSI。事实证明,失败是由于缺少 VC++ 可再发行组件而发生的。
因此,我通过添加一行来更新 Dockerfile
来复制和安装 vc_redist.x64.exe
,这为我解决了问题。
Dockerfile
中的片段为我解决了问题。
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2
COPY vc_redist.x64.exe c:/ \
msodbcsql_17.3.1.1_x64.msi c:/
RUN c:\vc_redist.x64.exe /install /passive /norestart
RUN msiexec.exe /i C:\msodbcsql_17.3.1.1_x64.msi /norestart /qn /quiet /passive IACCEPTMSODBCSQLLICENSETERMS=YES
...
只要在这里发布这个答案,以防其他人偶然发现同样的问题。