首页 文章

如何从Jenkins docker容器内部使用docker

提问于
浏览
4

我遇到了以下问题:我创建了一个Jenkins docker容器,并将主机上的docker socket与容器相连 . 像这样:

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上创建一些工作时,我得到通常的“许可被拒绝”消息:

尝试在unix上连接到Docker守护程序套接字时获得权限被拒绝:///var/run/docker.sock:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json:dial unix /var/run/docker.sock:connect:权限被拒绝

但是,如果我附加到容器并使用root用户运行命令,则不会发生此问题 .

我怎样才能解决这个问题?

我无法通过运行 sudo gpasswd -a jenkins docker 将jenkins用户添加到主机上的docker组(因为主机上没有jenkins用户,仅在容器中)并且我也可以_t29033_t了解任何docker组) . 有关如何解决这个问题的任何提示?

1 回答

  • 3

    您可以在容器内添加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 .

    请参阅docs

相关问题