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

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

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

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

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


当前回答

检查docker是否正在运行 Sudo systemctl status docker

检查错误 Docker ps a

准许 sudo usermod -aG docker ${USER} 下一个命令 su - ${USER}

如果出现错误,请再次检查 Docker ps a

其他回答

检查docker是否正在运行 Sudo systemctl status docker

检查错误 Docker ps a

准许 sudo usermod -aG docker ${USER} 下一个命令 su - ${USER}

如果出现错误,请再次检查 Docker ps a

在我的例子中,不仅需要将jenkins用户添加到docker组,而且需要将该组作为jenkins用户的主组。

# usermod -g docker jenkins
# usermod -a -G jenkins jenkins

不要忘记重新连接jenkins从节点或重新启动jenkins服务器,这取决于您的情况。

方法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

我将jenkins用户添加到根组,并重新启动jenkins,它开始工作。

sudo usermod -a -G root jenkins
sudo service jenkins restart

似乎没有人提到,根据官方来源:https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user -你可以用sudo“pre”你的命令,它将在不创建用户或其他操作的情况下工作。例如sudo docker拉mongo -这是有效的。