在我所看到的docker文件中,以及在编写docker文件的最佳实践中:https://docs.docker.com/engine/reference/builder/#copy,当使用apt-get
安装某些包时,apt-get update
总是首先运行。我担心这一点,因为我们在相应的docker容器中构建的应用程序将依赖于这些已安装的软件包,如果在最新版本的已安装软件包中存在一些不一致,我们构建的软件将不再正常工作。为什么我们不指定包的版本,而是使用apt-get update
?
发布于 2018-08-29 07:58:06
从apt-get
的手册页
update用于从源重新同步包索引文件。可用包的索引从/etc/apt/Soures.list中指定的位置获取。例如,当使用Debian归档时,此命令检索并扫描Packages.gz文件,以便获得有关新的和更新的包的信息。应始终在升级或dist-upgrade之前执行更新。请注意,由于无法预先知道程序包文件的大小,因此总体进度将不正确。
您可以尝试在docker映像上不运行update
的情况下运行apt-get install
,但是您可能会发现,由于包索引已过期,许多内容将无法安装。
一旦更新了包数据,您就可以在运行install
时指定包的特定版本。
apt update && apt install -y \
git=1:2.7.4-0ubuntu1.4
使用docker容器的示例:
> sudo docker run -it ubuntu:16.04 /bin/bash
# root@513eb786d86d:/# apt install git
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package git
root@513eb786d86d:/# apt install git=1:2.7.4-0ubuntu1.4
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package git
root@513eb786d86d:/# apt update
...
root@513eb786d86d:/# apt install git=1:2.7.4-0ubuntu1.4
# works this time!
https://stackoverflow.com/questions/52067577
复制相似问题