我在本地构建了rabbitMQ alpine docker图像,看到完整的Dockerfile
RUN export GNUPGHOME="$(mktemp -d)" \ && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc
随机我在下面得到错误(主要是在jenkins CI系统中)
rm -rf /tmp/tmp.bBBnjn rabbitmq-server.tar.xz.asc rm: can't remove '/tmp/tmp.bBBnjn/S.gpg-agent.extra': No such file or directory
要么
rm -rf /tmp/tmp.GlfNBI rabbitmq-server.tar.xz.asc rm: can't remove '/tmp/tmp.GlfNBI/S.gpg-agent.ssh': No such file or directory
看起来gpg代理只是在rm期间停止了。 (存在删除时,但删除时消失)
我使用的是Ubuntu 16.04 LTS版本
$ docker info Containers: 2 Running: 2 Paused: 0 Stopped: 0 Images: 193 Server Version: 1.12.6 Storage Driver: overlay Backing Filesystem: extfs Logging Driver: json-file Cgroup Driver: cgroupfs ..
对此有何解决方案?
将它改为下面,它应该一直工作
export GNUPGHOME="$(mktemp -d)"; \
gpg --keyserver pgp.mit.edu --recv-keys "$GPG_KEY" || \
gpg --keyserver keyserver.pgp.com --recv-keys "$GPG_KEY" || \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" ; \
gpg --batch --verify rabbitmq-server.tar.xz.asc rabbitmq-server.tar.xz; \
pkill -9 gpg-agent; \
pkill -9 dirmngr; \
rm -rf "$GNUPGHOME";
gpg-agent
和dirmngr
在后台运行,有时需要时间来存在。我相信rm
会选择这些进程的文件,当它试图删除守护进程和文件区域时已经消失了。所以添加这两个pkill应该删除错误