我有一个CentOS 7的对接图像,它通过推荐指令安装对接器-ce。即
RUN yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
RUN yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
RUN yum update -y
RUN yum install -y docker-ce docker-ce-cli containerd.io最近,它停止工作,现在失败了,如下所示:
--> Processing Conflict: moby-containerd-1.3.6+azure-1.x86_64 conflicts containerd
--> Processing Conflict: moby-runc-1.0.0~rc10+azure-2.x86_64 conflicts runc
--> Finished Dependency Resolution
Error: moby-containerd conflicts with containerd.io-1.2.13-3.2.el7.x86_64
Error: moby-runc conflicts with containerd.io-1.2.13-3.2.el7.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
The command '/bin/sh -c yum install -y docker-ce docker-ce-cli containerd.io' returned a non-zero code: 1如果将install命令替换为:
yum install -y docker对于一个未签名的包,我有一个不同的错误:
Package runc is obsoleted by moby-runc, trying to install moby-runc-1.0.0~rc10+azure-2.x86_64 instead
...
Package moby-runc-1.0.0~rc10+azure-2.x86_64.rpm is not signed我试着强制使用几个旧版本,如下所示,但没有效果。
RUN yum install -y docker-1.13.1-102.git7f2769b.el7.centos为什么会发生这种情况?我怎么才能修好它?我怎样才能防止将来出现类似的问题?
更新:这个问题中缺少的一个关键信息是Azure的使用。当aspnetcore需要在Azure devops管道中发布包时,我有以下内容:
RUN rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
RUN yum update -y && yum install aspnetcore-runtime-3.1 -y发布于 2020-08-02 21:50:55
我的回购需要更新--以下是我的解决办法:
curl https://packages.microsoft.com/config/rhel/7/prod.repo > ./microsoft-prod.repo
sudo cp ./microsoft-prod.repo /etc/yum.repos.d/
yum update -y发布于 2020-09-22 09:02:02
user8475213的回答对我有用。但我也不得不执行这些命令:
yum clean metadata发布于 2020-07-29 23:15:58
注意事项:通常适用免责声明。这只是我想的,我可能弄错了。如果有的话,请评论/建议编辑。
我怎样才能修好它?
这实际上是回购的基尔的问题,而不是停靠器-ce回购(虽然我最初在那里提交了一个错误报告(请参阅发布#11198)。
moby软件包来自“packages -”。看样子基尔变了。现在正确的答案是:
baseurl=https://packages.microsoft.com/rhel/7/prod/安装方式:
RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo >/etc/yum.repos.d/microsoft-prod.repo有着诡异的包裹的是:
baseurl=https://packages.microsoft.com/centos/7/prod/安装方式:
RUN rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpmmoby软件包只存在于可能已经失效的CentOS回购中,因为微软自己已经改变了不同地方的安装文档。
还有一个解决办法。您可以将“moby”包排除在外,直到它们真正准备就绪为止,如下所示:
RUN yum install -y docker --exclude=moby-\*为什么会发生这种事?
我认为这是由于过分积极地推广moby的对接-ce功能的替代。希望这是一种暂时的状态,而他们正在解决问题。
包moby-runc-1.0.0~rc10+azure-2.x86_64.rpm未签名表明所使用的构建过程存在问题。这个软件包只应该提供给测试版测试人员。当然不是在标记为“稳定”的存储库中。
如何防止将来出现类似的问题?
与流行的说法相反,使用码头并不能将你与环境的变化完全隔离开来。您的docker文件使用的存储库本身就是环境的一部分。如果环境发生了变化,就像在这种情况下一样,那么您的可复制构建可能不再是可重复的。避免这种情况的唯一真正方法是托管您自己的存储库,这需要付出很高的代价。通常,外部存储库是足够稳定的,因此这不是一个问题。
您应该考虑指定要安装在您的dockerfile中的软件包的特定版本,以避免意外升级。然而,在这样的情况下,在包被淘汰和替换的情况下,这将不会对您有所帮助。
https://stackoverflow.com/questions/63163859
复制相似问题