我是码头工人的新手。我只是试着在我的本地机器(Ubuntu 16.04)上使用docker和Jenkins。

我用下面的管道脚本配置了一个新作业。

node {
    stage('Build') {
      docker.image('maven:3.3.3').inside {
        sh 'mvn --version'
      }
    }
}

但是它失败了,错误如下:

在unix:///var/run/ Docker .sock试图连接到Docker守护进程套接字时被拒绝


当前回答

在詹金斯运行的服务器上,我用了

sudo setfacl -m user:tomcat:rw /var/run/docker.sock

然后运行每个docker容器

-v /var/run/docker.sock:/var/run/docker.sock

使用setfacl似乎是更好的选择,并且不需要“-u user”。然后,容器以运行Jenkins的同一用户运行。但我很感激安全专家的反馈。

其他回答

我们有两种方法来解决这个问题

方法1 应用新的组成员资格

sudo usermod -aG docker ${USER}
su - ${USER}

方法2 修改文件权限和组权限

chmod 777 /var/run/docker.sock
sudo chown root:docker /var/run/docker.sock

方法1为安全方法。

也许你应该从一开始就使用“-u root”选项运行docker

至少这解决了我的问题

修改docker的访问权限。袜子文件

chmod 777 /var/run/docker.sock

也可以在命令的开头使用sudo。

Chmod 777将允许所有用户的所有操作,而Chmod 666将允许所有用户读和写,但不能执行文件。

除了将用户添加到docker组并尝试本线程中提到的所有方法之外,我花了一段时间才意识到我必须重新启动我的终端,然后重新登录到ec2实例。从那以后,它起作用了。

方法01:—更安全的方法

sudo usermod -aG docker ${USER}

若要应用新的组成员资格,请从服务器注销并返回,或键入以下内容:

su - ${USER}

系统将提示您输入用户密码继续。 确认您的用户现在已添加到docker组,输入以下命令:

id -nG

方法02:-不建议用于公共部署(不安全)

chmod 777 /var/run/docker.sock

或使用

sudo chown root:docker /var/run/docker.sock