如何使用Jenkins docker容器内的docker
我遇到了以下问题:我创build了一个Jenkins docker容器,并将主机上的docker套接字与容器链接起来。 喜欢这个:
docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 -d --name jenkins --restart unless-stopped jenkins
然后当我尝试在jenkins上创build一些工作时,我得到了通常的“权限被拒绝”的信息:
尝试连接到Unix上的Docker守护进程套接字时拒绝了权限:///var/run/docker.sock:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json :dial unix /var/run/docker.sock:连接:权限被拒绝
但是,如果我附加到容器并使用root用户运行命令,则不会发生此问题。
我怎样才能解决这个问题?
我不能通过运行sudo gpasswd -a jenkins docker
(因为主机上没有jenkins用户,只在容器中)而将jenkins用户添加到主机上的docker组,并且我也不能在容器内运行此命令(因为容器不知道任何docker组)。 有关如何解决这个问题的任何提示?
您可以在容器中添加泊坞窗组。 在它的bash中这样做:
groupadd -g <docker-group-id> docker
找出在主机上运行的<docker-group-id>
:
ls -ln /var/run/docker.sock
然后将jenkins用户添加到docker组中:
gpasswd -a jenkins docker
考虑到这可能产生的任何安全问题:
警告:docker组授予与root用户等效的权限。 有关这会如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。
参考文档
- 为什么没有创build图像,为什么Docker没有清理它们?
- 更好的方式远程debuggingDocker容器与Eclipse + Pydev的Odoo / Python?
- Azure ARM模板dependsOn:如何引用VM扩展?
- 在AWS Elastic Beanstalk上运行Docker容器 – 我的web应用程序在哪里?
- AWS上的Docker swarm群集服务无法访问互联网
- Docker-compose错误
- 是否有可能通过dockerFile构build图像时从.env文件获取值
- 尝试使用Install-Module在Windows Server 2016中安装Docker时出错
- ADD之后图像层的不合理增加。 句子