直到今天早上,构建容器都是一个平稳的过程,现在我遇到了apt get -y mongodb
的一些问题。
我有一个非常简单的Dockerfile,发布了相关代码,因为这是重现该问题所需要的。
FROM python:2.7
RUN apt-get update && \
apt-get -y install \
gpg \
mongodb \
我已经研究了一些修复程序,但看起来有些过分,我是否应该更改基本映像?我正在尝试了解此错误的原因以及如何对其进行进一步的证明。
注意,我忘记了放置跟踪。
Sending build context to Docker daemon 1.354GB
Step 1/7 : FROM python:2.7
2.7: Pulling from library/python
5ae19949497e: Pull complete
ed3d96a2798e: Pull complete
f12136850781: Pull complete
1a9ad5d5550b: Pull complete
6f18049a0455: Pull complete
900d7861659d: Pull complete
536c9e631831: Pull complete
cb522be31b83: Pull complete
d03d3d7b603d: Pull complete
Digest: sha256:ee76dd856d06bdd734e1c3c816b243c984586629708f0a3e32038f94a891a5d8
Status: Downloaded newer image for python:2.7
---> 3edf9092825f
Step 2/7 : RUN apt-get update && apt-get -y install gpg mongodb curl
---> Running in 870a931ec60c
Get:1 http://security.debian.org/debian-security buster/updates InRelease [39.1 kB]
Get:2 http://deb.debian.org/debian buster InRelease [118 kB]
Get:3 http://security.debian.org/debian-security buster/updates/main amd64 Packages [11.9 kB]
Get:4 http://deb.debian.org/debian buster-updates InRelease [46.8 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7897 kB]
Fetched 8113 kB in 4s (1805 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
Package mongodb is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'mongodb' has no installation candidate
The command '/bin/sh -c apt-get update && apt-get -y install gpg mongodb curl' returned a non-zero code: 100
答案 0 :(得分:2)
我猜您删除了旧的python:2.7
映像并重建您的dockerfile或只是换了另一台PC进行了构建。如果您使用新图像,则可以看到下一个:
orange@orange:~$ docker images python:2.7
REPOSITORY TAG IMAGE ID CREATED SIZE
python 2.7 3edf9092825f 8 hours ago 884MB
它显示该图像是8个小时前创建的,因此与您几天前使用的图像相比,所使用的图像有很大不同。
在this中,如果您搜索python:2.7
,则可能会发现它与2.7.16-buster
相同,正如您所知,几天前发布的debian buster
,参见this:
2019-07-06:初始版本:10.0(新闻发布)
所以我想几天前,python:2.7
是基于debian stretch
的,所以在新的debian版本中,删除了一些软件包,这会导致失败。
最佳做法:
您会看到python dockerhub存储库中有Simple Tags
和Shared Tags
,请使用不会经常更改的Simple Tags
,不要使用可能标记为的Shared Tags
以后根据您的情况使用其他图像ID,请使用python:2.7.16-stretch
。实际上,此基本映像是您过去使用的标记为python:2.7
的映像,而现在已标记为python:2.7
的映像不是您过去使用的映像。