我在docker上安装了Ubuntu 14.04镜像。在那之后,当我尝试在ubuntu映像中安装包时,我无法定位包错误:

apt-get install curl

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package curl

如何修复这个错误?


当前回答

在Dockerfile中增加如下命令:

RUN apt-get update

其他回答

因为映像中没有包缓存,所以需要运行:

apt-get update

在安装包之前,如果你的命令在Dockerfile中,你需要:

apt-get -y install curl

要抑制命令的标准输出,请使用-qq。如。

apt-get -qq -y install curl

你需要更新Ubuntu中的软件包列表:

$ sudo apt-get update
$ sudo apt-get install <package_name>

运行apt-get update并没有为我解决这个问题,因为它似乎总是从缓存中读取这个命令的结果,而缓存似乎被损坏了。我怀疑,如果你有多个docker容器具有相同的“基本映像”(对我来说是python:3.8-slim),就会发生这种情况。

所以,以下是对我有用的方法:

停止系统中的所有Docker容器

docker stop $(sudo docker ps -aq) 

移除悬挂的容器

docker container prune 

删除所有悬空图像

docker image prune 

运行这些命令后,docker构建似乎失去了损坏的缓存,并进行了一个干净的apt-get更新,以获取正确的包信息和包的安装进度。

当我试图在Dockerfile中安装cron和nginx-extras时,我得到了同样的错误。到目前为止,所有的答案我都试过了,没有结果。

然后我就跑了 Sudo服务docker重启 这为我解决了问题。

在Dockerfile中增加如下命令:

RUN apt-get update