我正在尝试对 drone.io docker
插件进行逆向工程,并了解如何在管道步骤(DinD)中运行docker守护程序。
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
任何建议都会受到赞赏。
答案 0 :(得分:1)
您需要通过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
请注意,这应该仅是图像名称。它不得包含标签。