我正在尝试升级我们的对接基地图像到最新的稳定版本的Ubuntu。我把这个问题孤立成了一个简单的可重复的案例。我有这样一个Dockerfile:
FROM ubuntu:22.04
MAINTAINER mep-dev@zulily.com
# Install java and clean-up
RUN apt-get update
当我在我的本地机器上构建它时,我没有任何问题。但是,当我在CICD上构建它时,有时会遇到以下错误:
步骤3/3 :运行apt-get更新
->在6ca01b60de64中运行
Get:1 http://archive.ubuntu.com/ubuntu干扰InRelease 270 kB
Get:2 http://security.ubuntu.com/ubuntu干扰- InRelease 110 kB
Get:3 http://archive.ubuntu.com/ubuntu干扰-更新InRelease 109 kB
Get:4 http://archive.ubuntu.com/ubuntu干扰-backports 99.8 kB
错误:1 http://archive.ubuntu.com/ubuntu干扰InRelease
由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
错误:3 http://archive.ubuntu.com/ubuntu干扰-更新InRelease
由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
错误:4 http://archive.ubuntu.com/ubuntu干扰-backports
由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
错误:2 http://security.ubuntu.com/ubuntu干扰-安全InRelease
由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
正在读取包列表...
W:http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease:键环http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W:http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease:键环http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W: GPG错误:http://archive.ubuntu.com/ubuntu干扰InRelease:由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
E:存储库'http://archive.ubuntu.com/ubuntu jammy InRelease‘没有签名。
W:http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease:键环http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W:http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease:键环http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W: GPG错误:http://archive.ubuntu.com/ubuntu干扰-更新InRelease:由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
E:存储库'http://archive.ubuntu.com/ubuntu干扰-更新InRelease‘没有签名。
W:http://archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease:键环http://archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W:http://archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease:键环http://archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W: GPG错误:http://archive.ubuntu.com/ubuntu干扰-backports:由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
E:存储库'http://archive.ubuntu.com/ubuntu jammy-backports InRelease‘没有签名。
W:http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease:键环http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W:http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease:键环http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease中的键被忽略,因为执行apt键的用户'_apt‘无法读取该文件。
W: GPG错误:http://security.ubuntu.com/ubuntu干扰-安全InRelease:由于公钥不可用,无法验证下列签名: NO_PUBKEY 871920D1991BC93C
E:存储库'http://security.ubuntu.com/ubuntu干扰-安全InRelease‘没有签名。
E:执行脚本问题apt::Update::Post调用'rm -f /var/cache/apt/ Problem /..deb/var/cache/apt/档案/分部/..deb/var/cache/apt/*..bin比对真‘
E:子进程返回一个错误代码。
命令'/bin/sh apt -c‘返回一个非零代码: 100
如果我注释掉了RUN apt-get update
,那么它就成功了,我可以输入容器并看到/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
和/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
确实存在,并且已经读取了所有权限:
root@b778220b39d8:/# ls -l /etc/apt/受托人
共计8
-rw-r--r-1根根2794 3月26 2021 ubuntu-keyring-2012-cdimage.gpg
-rw-r--r-1根根1733 2021 ubuntu-keyring-2018-存档. Mar
我还检查了父目录,它们至少对所有人都有r-x。
This answer可能是相关的,但是为什么在一个环境而不是另一个环境中使用基本图像时,文件具有正确的结构?
更新:
通过使用--pull
,我可以看到它使用的确切图像。
$ docker build --拉-t $EMAIL_DELIVERABILITY_ARN。
步骤1/3 :来自ubuntu:22.04
22.04:从图书馆调出/ubuntu
摘要: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7ac
状态:下载ubuntu的更新映像:22.04
- 27941809078c
这是我在本地建筑时看到的相同的sha和图像id,它可以工作。
我和ubuntu有同样的问题:20.04。
发布于 2022-09-13 10:02:12
在花了半天时间修复Ubuntu映像(没有损坏)之后,我终于开始调试主机了。
这是一个docker
问题。Ubuntu利用syscalls实现更好的密钥安全性,Docker还不支持这种安全性。解决办法是更新码头..。或者使用runc或者类似的东西。
apt
没有得到不支持syscalls的消息,而是得到了拒绝权限的消息,这导致了令人困惑的错误消息。
从技术上讲,您可以对ubuntu进行补丁,以降低安全性,并与老的对接者一起工作,但遗憾的是,这不是一个长期的解决方案。
https://stackoverflow.com/questions/72624687
复制相似问题