我正在尝试对drone.iodocker
插件进行逆向工程,并了解如何在管道步骤(DinD(中运行docker守护进程。
drone.io使用库github.com/cncd/pipeline
来编译和执行 .drone.yml 文件。
plugins/docker
做的第一件事是启动 docker 守护进程:
+ /usr/local/bin/dockerd -g /var/lib/docker
如果在官方插件中很好,这就可以工作,但我无法让它与我自己的图像一起工作,我做同样的事情:
管道.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
请注意,这应该只是映像名称。它不得包含标记。