我创建了一个Docker运行器,该运行器将Docker套接字/var/run/docker.sock绑定到容器中,如1中所述:
sudo gitlab-runner register -n \
--url https://gitlab.com/ \
--registration-token REGISTRATION_TOKEN \
--executor docker \
--description "My Docker Runner" \
--docker-image "docker:stable" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
我已阅读了几篇文章/文章,这些文章/文章建议避免Docker-in-Docker部署,而建议使用Docker套接字绑定。
然而,这种方法的问题在于,能够在.gitlab-ci.yml
中添加Docker命令的任何开发人员都可以访问/停止/删除任何容器在主机上运行。例如,添加docker rm -f $(docker ps -a -q)
将删除所有现有容器。
如何避免这种情况?
答案 0 :(得分:0)
创建多个运行程序(是否为shell,docker中的docker,docker套接字)。 然后,仅允许特定的组/项目使用特定的运行器。这是确保跑步者最安全的方法。