我在Docker上有Jenkins,Jenkins主服务器和从服务器都是Docker容器,并挂载了var / run / docker.sock。它们之间有适当的连接,但是当我尝试运行简单的docker“ hello-world”作为测试(使用Pipeline脚本)时,我出了名:
尝试连接Docker守护程序时拒绝获得权限 unix:///var/run/docker.sock上的套接字:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json?all=1:拨号 Unix /var/run/docker.sock:connect:权限被拒绝
我已经读过很多遍了,我的Jenkins用户应该属于docker组,然后一切都应该正常工作。但显然,这发生了:
jenkins@7401675c7c9e:~$ groups
jenkins docker
jenkins@7401675c7c9e:~$ docker ps -a
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied
现在我完全不知道我在做什么错,我已经尝试了一切:
RUN usermod -a -G docker jenkins
添加到两个Dockerfile(用于
主映像和从映像)DOCKER_OPTS=' -G jenkins'
添加到/ etc / default / docker privileged: true
添加到docker-compose usermod -aG docker jenkins
,然后重新登录。无论我做什么,管道都不能只访问docker socket。我是jenkins用户,我在docker组中,并且仍然无法对docker daemon做任何事情。 Jenkinsfile非常简单:
pipeline{
agent{
node{
label 'swarm'
}
}
stages {
stage("Just checking"){
steps{
sh 'whoami'
sh 'groups jenkins'
}
}
stage("Hello world!"){
steps{
sh 'docker run hello-world'
}
} ...
结果是:
+ whoami
jenkins
+ groups jenkins
jenkins : jenkins docker
+ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
script returned exit code 126
我刚刚开始使用docker和jenkins,我不知道自己在做什么错,有人看到任何明显的错误吗?