Ram*_*jan 242 docker ubuntu-14.04
我在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
Run Code Online (Sandbox Code Playgroud)
如何解决这个错误?
ISa*_*ych 516
这是因为图像中没有包缓存,您需要运行:
apt-get update
Run Code Online (Sandbox Code Playgroud)
在安装软件包之前,如果您的命令在Dockerfile中,那么您将需要:
apt-get -y install curl
Run Code Online (Sandbox Code Playgroud)
禁止使用命令的标准输出-qq
.例如
apt-get -qq -y install curl
Run Code Online (Sandbox Code Playgroud)
bec*_*man 10
运行apt-get update并没有为我解决这个问题,因为它似乎总是从缓存中读取此命令的结果,并且不知何故缓存似乎已损坏。我怀疑,如果您有多个具有相同“基本映像”的 docker 容器(对我来说是 python:3.8-slim),就会发生这种情况。
所以,这对我有用:
停止系统中的所有 Docker 容器
docker stop $(sudo docker ps -aq)
Run Code Online (Sandbox Code Playgroud)
移除所有悬挂的容器
docker container prune
Run Code Online (Sandbox Code Playgroud)
删除所有悬空图像
docker image prune
Run Code Online (Sandbox Code Playgroud)
运行这些命令后,docker 构建似乎会丢失损坏的缓存,并执行干净的apt-get 更新,以获取正确的包信息,并且包安装进度按预期进行。
确保您的 Dockerfile 中没有任何语法错误,因为这也会导致此错误。一个正确的例子是:
RUN apt-get update \
&& apt-get -y install curl \
another-package
Run Code Online (Sandbox Code Playgroud)
这是修复语法错误和添加的组合,apt-get update
为我解决了问题。
归档时间: |
|
查看次数: |
129703 次 |
最近记录: |