drone.io: containerd: 写入 /proc/14/oom_score_adj: 权限被拒绝

drone.io: containerd: write /proc/14/oom_score_adj: permission denied

我正在尝试对 drone.io docker 插件进行逆向工程,并了解如何 运行 docker 守护进程流水线步骤 (DinD)。

drone.io 使用库 github.com/cncd/pipeline 来编译和执行 .drone.yml 文件。

plugins/docker 做的第一件事是启动 docker 守护进程:

+ /usr/local/bin/dockerd -g /var/lib/docker

这在官方插件中正常工作,但我无法让它与我自己的图像一起工作:

pipeline.yml

workspace:
  base: /go
  path: src/github.com/fnbk/hello

pipeline:
  test:
    image: fnbk/drone-daemon

fnbk/drone-daemon/run.sh

#!/bin/sh

/usr/local/bin/dockerd     # <= ERROR: containerd: write /proc/17/oom_score_adj: permission denied

# ...

它会给我以下错误:

containerd: write /proc/14/oom_score_adj: permission denied

完整示例可在 github 上找到:https://github.com/cncd/pipeline/pull/45

非常感谢任何建议。

您需要通过传递到服务器的 DRONE_ESCALATE 环境变量将您的插件添加到白名单。这是默认值:

DRONE_ESCALATE=plugins/docker,plugins/gcr,plugins/ecr

所以你会传递这样的东西:

-DRONE_ESCALATE=plugins/docker,plugins/gcr,plugins/ecr
+DRONE_ESCALATE=plugins/docker,plugins/gcr,plugins/ecr,fnbk/my-custom-plugin

请注意,这应该只是图像名称。它不能包含标签。