我想要做的事情:
使用以下的 Dockerfile 和 docker build 命令将 Microsoft ODBC 驱动程序安装到 Docker 镜像中:
这个 Dockerfile 的大部分是来自于 Microsoft 的指令,用于在 Linux 上安装 Microsoft SQL Server ODBC 驱动程序,具体来说是Debian的指令。 我期望发生的情况 Docker 镜像能够成功构建。 实际发生的情况
我在多台不同处理器类型的 MacBook Pro 上观察了这个问题,得出结论这是一个“苹果硅芯片问题”。我的观察结果如下:
其他细节:
我确认
结论:
鉴于上述阻碍,当在 MacBook Pro 上安装了 Docker,并且该设备运行着苹果的芯片时,我应该如何成功地在 Docker 镜像中安装 Microsoft ODBC 驱动程序以连接 SQL Server?
使用以下的 Dockerfile 和 docker build 命令将 Microsoft ODBC 驱动程序安装到 Docker 镜像中:
FROM public.ecr.aws/docker/library/python:3.9.10-slim-buster
RUN apt-get update
RUN apt-get install -y curl gnupg
RUN curl -sSL https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl -sSL https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql18
这个 Dockerfile 的大部分是来自于 Microsoft 的指令,用于在 Linux 上安装 Microsoft SQL Server ODBC 驱动程序,具体来说是Debian的指令。 我期望发生的情况 Docker 镜像能够成功构建。 实际发生的情况
docker build
在基于 Intel 的 MacBook Pro 上运行时可以成功构建镜像。docker build
在基于 Apple Silicon M1 的 MacBook Pro 上运行时会返回以下错误:
=> ERROR [7/7] RUN ACCEPT_EULA=Y apt-get install -y msodbcsql18 0.7s
------
> [7/7] RUN ACCEPT_EULA=Y apt-get install -y msodbcsql18:
#10 0.192 Reading package lists...
#10 0.541 Building dependency tree...
#10 0.610 Reading state information...
#10 0.661 E: Unable to locate package msodbcsql18
------
executor failed running [/bin/sh -c ACCEPT_EULA=Y apt-get install -y msodbcsql18]: exit code: 100
我在多台不同处理器类型的 MacBook Pro 上观察了这个问题,得出结论这是一个“苹果硅芯片问题”。我的观察结果如下:
- MacBook Pro (14-inch, 2021) (M1) (FAILS TO BUILD)
- MacBook Pro (16-inch, 2021) (M1) (FAILS TO BUILD)
- MacBook Pro (13-inch, 2020) (Intel) (SUCCESSFUL BUILD)
- MacBook Pro (16-inch, 2019) (Intel) (SUCCESSFUL BUILD) (2 different MacBooks tested)
其他细节:
我确认
public.ecr.aws/docker/library/python:3.9.10-slim-buster
是基于 Debian 10 的镜像,通过在从此镜像创建的基本容器中执行 cat /etc/os-release
命令得到以下结果:PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
结论:
鉴于上述阻碍,当在 MacBook Pro 上安装了 Docker,并且该设备运行着苹果的芯片时,我应该如何成功地在 Docker 镜像中安装 Microsoft ODBC 驱动程序以连接 SQL Server?