M1 MacBook 上的 Ubuntu (20.10) Docker 映像上的 MSSQL 工具

Rap*_*dad 7 sql-server ubuntu docker apple-m1

在我的 M1 MacbookPro 上,我创建了一个 Dockerfile,如下所示:

FROM ubuntu:20.10

RUN apt-get update
RUN apt-get install -y curl gnupg2

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

RUN curl https://packages.microsoft.com/config/ubuntu/20.10/prod.list > /etc/apt/sources.list.d/mssql-release.list

RUN exit
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17

RUN ACCEPT_EULA=Y apt-get install -y mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
RUN source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

它使用 Ubuntu20.10映像,并尝试安装Microsoft 的 ODBC 驱动程序我已按照Microsoft 文档遵循命令。

当我运行构建时,出现错误Unable to locate package msodbcsql17。我尝试运行并通过 SSH 连接到容器,但仍然遇到相同的错误。

% docker build .           
[+] Building 5.3s (11/14)                                                                                                                                                                    
 => [internal] load build definition from Dockerfile                                                                                                                                    0.4s
 => => transferring dockerfile: 37B                                                                                                                                                     0.0s
 => [internal] load .dockerignore                                                                                                                                                       0.5s
 => => transferring context: 2B                                                                                                                                                         0.0s
 => [internal] load metadata for docker.io/library/ubuntu:20.10                                                                                                                         2.8s
 => [ 1/11] FROM docker.io/library/ubuntu:20.10@sha256:6b603b0f3b8fc71b1a97bd38e081e8df04793f1447362c12385b48106aaded3f                                                                 0.0s
 => CACHED [ 2/11] RUN apt-get update                                                                                                                                                   0.0s
 => CACHED [ 3/11] RUN apt-get install -y curl gnupg2                                                                                                                                   0.0s
 => CACHED [ 4/11] RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -                                                                                           0.0s
 => CACHED [ 5/11] RUN curl https://packages.microsoft.com/config/ubuntu/20.10/prod.list > /etc/apt/sources.list.d/mssql-release.list                                                   0.0s
 => CACHED [ 6/11] RUN exit                                                                                                                                                             0.0s
 => CACHED [ 7/11] RUN apt-get update                                                                                                                                                   0.0s
 => ERROR [ 8/11] RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17                                                                                                                      1.8s
------                                                                                                                                                                                       
 > [ 8/11] RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17:                                                                                                                                 
#11 0.893 Reading package lists...                                                                                                                                                           
#11 1.278 Building dependency tree...                                                                                                                                                        
#11 1.347 Reading state information...
#11 1.394 E: Unable to locate package msodbcsql17
------
executor failed running [/bin/sh -c ACCEPT_EULA=Y apt-get install -y msodbcsql17]: exit code: 100
Run Code Online (Sandbox Code Playgroud)

小智 19

我遇到了与上面类似的问题,发现问题是由于没有适用于arm64架构(M1 Mac)的msodbcsql17软件包。解决方案是将 docker 文件开头的基本镜像更改为

FROM --platform=linux/amd64 python:3.8.6
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下

FROM --platform=linux/amd64 ubuntu:20.10
Run Code Online (Sandbox Code Playgroud)


小智 0

从您的错误[无法找到包 msodbcsql17 ] 中找到以下链接。

https://github.com/MicrosoftDocs/sql-docs/issues/6494