簡體   English   中英

ZC5FD214CD0D2B3B4272E73B022BA5C2Z Z3D945423F8E9496C429A5B4604F4F4604FZ 18.04無法安裝MSODBCSQL17778840100C97840C978840C97840C97840C978840C9840C9840C9840C9840C9840C9829840C982729840C9840C9827840C98272988C9292138C9788C9292332330C977840C330C978C923B301333B

[英]Docker Ubuntu 18.04 unable to install msodbcsql17 SQL Server ODBC Driver 17

我有下面的 ubuntu docker 文件,我想在其中添加 SQL 服務器 ZF89750C5A27 安裝驅動程序。 當我構建 docker 文件時,我收到一個錯誤:“/bin/sh -c apt-get install msodbcsql17”返回一個非零代碼:1

能否請你幫忙?

我指的是文章 - https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql -server-ver15

我在我的 Ubuntu VM 中按照文章中的步驟操作,它工作正常,我能夠運行我的 python 程序。 但是,當我使用 docker 文件時出現錯誤

FROM ubuntu:18.04

RUN apt update -y  &&  apt upgrade -y && apt-get update 
RUN apt install -y curl python3.7 git python3-pip openjdk-8-jdk unixodbc-dev

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN exit
#RUN ACCEPT_EULA=Y apt-get install msodbcsql17
RUN apt-get update
RUN ACCEPT_EULA=Y  
RUN apt-get install msodbcsql17
#RUN ACCEPT_EULA=Y apt install msodbcsql17
RUN ACCEPT_EULA=Y apt install mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

COPY startup.sh /
RUN chmod +x /startup.sh
ENTRYPOINT ["sh","/startup.sh"]

我可以讓它工作。 以下是更新后的 Docker 文件片段

FROM ubuntu:18.04

RUN apt update -y  &&  apt upgrade -y && apt-get update 
RUN apt install -y curl python3.7 git python3-pip openjdk-8-jdk unixodbc-dev

# Add SQL Server ODBC Driver 17 for Ubuntu 18.04
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

COPY startup.sh /
RUN chmod +x /startup.sh
ENTRYPOINT ["sh","/startup.sh"]

如果您使用的是 WSL2,則此錯誤可能是由於時鍾問題不正確造成的。
打開 wsl2 並運行

sudo hwclock --hctosys

參考時鍾: https ://www.thegeekstuff.com/2013/08/hwclock-examples/
wsl2 問題: https : //github.com/microsoft/WSL/issues/5324

當使用 WSL2 支持的 docker for windows 時,這可能會解決 apt-get 的問題

作為 Suraj 的補充

如果您將第一個語句替換為以下內容,他的答案適用於 Macbook M1:

FROM --platform=linux/amd64 ubuntu:18.04

我的工作過

RUN apt-get install -y unixodbc-dev && apt-get update && apt-get upgrade \
    && wget http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1_amd64.deb \
    && apt-get install ./multiarch-support_2.27-3ubuntu1_amd64.deb \
    && apt-get update \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \ 
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17 \
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools \
    && apt-get upgrade

暫無
暫無

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

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