我正在尝试在 Docker 映像中的 ubuntu 14.04 上安装 curl,步骤如下:
sudo apt-get 更新 sudo apt-get 安装 curl
永远不会与以下输出一起工作。似乎无法通过 apt-get 在此 Docker 映像上进行 curl 安装。我将感谢任何帮助,因为我是运行 Docker 的新手。
呃http://archive.ubuntu.comtrusty InRelease 错误http://archive.ubuntu.comtrusty-updates InRelease 错误http://archive.ubuntu.comtrusty-security InRelease 错误http://archive.ubuntu.comtrusty Release.gpg 无法解析‘archive.ubuntu.com’错误http://archive.ubuntu.comtrusty-updates Release.gpg 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.comtrusty-security Release.gpg 无法解析“archive.ubuntu.com”正在读取软件包列表...完成 W:无法获取http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease
W:获取失败http://archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease
W:获取失败http://archive.ubuntu.com/ubuntu/dists/trusty-security/InRelease
W:获取失败http://archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg 无法解析“archive.ubuntu.com”
W:获取失败http://archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg 无法解析“archive.ubuntu.com”
W:获取失败http://archive.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg 无法解析“archive.ubuntu.com”
W:部分索引文件下载失败。这些文件已被忽略,或使用旧文件代替。
呃http://archive.ubuntu.com/ubuntu/trusty/main libkeyutils1 amd64 1.5.6-1 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty/main libidn11 amd64 1.28-1ubuntu2 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty/main librtmp0 amd64 2.4+20121230.gitdf6c518-1 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main libkrb5support0 amd64 1.12+dfsg-2ubuntu5.2 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main libk5crypto3 amd64 1.12+dfsg-2ubuntu5.2 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main libkrb5-3 amd64 1.12+dfsg-2ubuntu5.2 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main libgssapi-krb5-2 amd64 1.12+dfsg-2ubuntu5.2 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main libcurl3 amd64 7.35.0-1ubuntu2.5 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main ca-certificates all 20141019ubuntu0.14.04.1 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main krb5-locales all 1.12+dfsg-2ubuntu5.2 无法解析“archive.ubuntu.com”错误http://archive.ubuntu.com/ubuntu/trusty-security/main curl amd64 7.35.0-1ubuntu2.5 无法解析“archive.ubuntu.com”E:无法获取http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb5support0_1.12+dfsg-2ubuntu5.2_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libk5crypto3_1.12+dfsg-2ubuntu5.2_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/k/keyutils/libkeyutils1_1.5.6-1_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb5-3_1.12+dfsg-2ubuntu5.2_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libgssapi-krb5-2_1.12+dfsg-2ubuntu5.2_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.28-1ubuntu2_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/r/rtmpdump/librtmp0_2.4+20121230.gitdf6c518-1_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3_7.35.0-1ubuntu2.5_amd64.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates/ca-certificates_20141019ubuntu0.14.04.1_all.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/krb5-locales_1.12+dfsg-2ubuntu5.2_all.deb 无法解析“archive.ubuntu.com”
E:获取失败http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.35.0-1ubuntu2.5_amd64.deb 无法解析“archive.ubuntu.com”
E:无法获取某些档案,也许运行 apt-get update 或尝试使用 --fix-missing?
答案1
似乎您无法访问这些资源,因为未配置 DNS。检查您是否有权访问它们(ping 8.8.8.8),然后为 docker 配置 DNS(将名称服务器 8.8.8.8 添加到 /etc/resolv.conf)。
问候
答案2
我尝试制作一个 Dockerfile 并重现了该问题。似乎您缺少 dns 配置。下面我尝试构建一个包含基本内容 (CMD tail) 的 Dockerfile 并将其标记为可信任。
anovil@ubuntu-anovil:~/tmp/serverfault$ cat Dockerfile
FROM ubuntu:trusty
RUN apt-get update \
&& apt-get install -y curl
CMD tail -f /dev/null
anovil@ubuntu-anovil:~/tmp/serverfault$ docker build -t trusty .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM ubuntu:14.04
14.04: Pulling from library/ubuntu
Digest: sha256:d3b59c1d15c3cfb58d9f2eaab8a232f21fc670c67c11f582bc48fb32df17f3b3
Status: Downloaded newer image for ubuntu:14.04
---> 89d5d8e8bafb
Step 2 : RUN apt-get update && apt-get install -y curl
---> Using cache
---> 23e51481a6b8
Successfully built 23e51481a6b8
不要直接运行它,而是像这样传递你选择的 DNS 或全局 DNS:
anovil@ubuntu-anovil:~/tmp/serverfault$ docker run -d --dns=8.8.8.8 trusty
5fe788260e6e43157fc06d991f994a6fd029624fb71dc6662024f2c118ac7577
anovil@ubuntu-anovil:~/tmp/serverfault$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5fe788260e6e trusty "/bin/sh -c 'tail -f " 3 seconds ago Up 2 seconds gloomy_dijkstra
anovil@ubuntu-anovil:~/tmp/serverfault$
或者,您可以像这样检查您的 docker 容器正在使用的名称服务器:
anovil@ubuntu-anovil:~/tmp/serverfault$ docker run -it trusty cat /etc/resolv.conf
search xyz.com
nameserver A.B.C.D
anovil@ubuntu-anovil:~/tmp/serverfault$ docker run -it --dns=8.8.8.8 trusty cat /etc/resolv.conf
search xyz.com
nameserver 8.8.8.8
anovil@ubuntu-anovil:~/tmp/serverfault$
您可以清楚地看到容器内部的 resolve.conf 的差异。
让我们知道进展如何。