apt-get update'返回非零代码:100

roy*_*roy 38 ubuntu docker dockerfile

我正在尝试从我的docker文件创建一个docker镜像,其中包含以下内容

FROM ubuntu:14.04.4
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main'  >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list
RUN gpg --keyserver pgp.mit.edu --recv-keys B9733A7A07513CAD
RUN gpg -a --export 07513CAD | apt-key add -
RUN gpg --keyserver pgp.mit.edu --recv-keys B02C46DF417A0893
RUN gpg -a --export 417A0893 | apt-key add -
RUN apt-get update
Run Code Online (Sandbox Code Playgroud)

哪个失败,出现以下错误

root@sbd-docker:~/ubuntu# docker build -t hdinsight .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM ubuntu:14.04.4
 ---> 8f1bd21bd25c
Step 2 : RUN echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list
 ---> Using cache
 ---> bc23070c0b18
Step 3 : RUN echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main'  >> /etc/apt/sources.list.d/HDP.list
 ---> Using cache
 ---> e45c32975e28
Step 4 : RUN echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list
 ---> Using cache
 ---> 1659cdcab06e
Step 5 : RUN gpg --keyserver pgp.mit.edu --recv-keys B9733A7A07513CAD
 ---> Using cache
 ---> ca73b2bfcd21
Step 6 : RUN gpg -a --export 07513CAD | apt-key add -
  ---> Using cache
  ---> 95596ad10bc9
Step 7 : RUN gpg --keyserver pgp.mit.edu --recv-keys B02C46DF417A0893
 ---> Using cache
 ---> f497deeef5b5
Step 8 : RUN gpg -a --export 417A0893 | apt-key add -
 ---> Using cache
 ---> d01dbe7fa02e
Step 9 : RUN apt-get update
 ---> Running in 89d75799982f
E: The method driver /usr/lib/apt/methods/https could not be found.
The command '/bin/sh -c apt-get update' returned a non-zero code: 100
root@sbd-docker:~/ubuntu#
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 14.04.4上运行它

我尝试重新启动docker,清理所有docker镜像,安装apt-transport-https但没有任何工作.

我不知道这里有什么不对.

tec*_*abu 48

因为您有https来源.apt-transport-https执行更新前安装.

FROM ubuntu:14.04.4
RUN apt-get update && apt-get install -y apt-transport-https
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main'  >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list

....
Rest of your Dockerfile.
Run Code Online (Sandbox Code Playgroud)

  • 你绝对是钻石!`apt-get install -y apt-transport-https` (4认同)
  • 就我而言,由于 https://github.com/docker/for-win/issues/5593,时钟不同步,并且在 WSL2 中运行 `sudo hwclock -s` 修复了所有 docker 版本的问题,因为我在 WSL2 中运行 docker。 (3认同)
  • 您的示例显示运行更新然后安装 apt-transport-https。你能澄清你的答案吗?似乎您更新一次即可安装,然后在此特定示例中,添加源并从这些新源再次更新。可以围绕这种情况改进答案。 (2认同)

Chr*_*ton 16

只是添加这个以防万一对其他人有用。就我而言,我必须将以下行添加到Dockerfile

RUN apt-get -y update
Run Code Online (Sandbox Code Playgroud)


Jon*_*lez 7

我不得不用 清理我的磁盘docker system prune,我这样做是因为我在另一个SO 答案中读到了它