我的EC2实例上的var/run/docker.sock权限问题

我的EC2实例上的var/run/docker.sock权限问题,docker,jenkins,Docker,Jenkins,我已经在我的EC2实例上安装了docker和jenkins。但是,每次重新启动服务器时,我都必须运行以下命令: chmod 666 var/run/docker.sock 在实例重启之间,如何保持对var/run/docker.sock文件的权限?您真的需要这样做吗? 下面是我的上述评论。您不应该手动运行此类命令,并让守护进程自己管理套接字文件权限 此外,这可能表明您在以普通用户身份运行docker命令时出现权限错误。解决此问题的最佳实践是将相关用户添加到docker组,以便他们可以访问守护进

我已经在我的EC2实例上安装了docker和jenkins。但是,每次重新启动服务器时,我都必须运行以下命令:

chmod 666 var/run/docker.sock
在实例重启之间,如何保持对
var/run/docker.sock
文件的权限?

您真的需要这样做吗? 下面是我的上述评论。您不应该手动运行此类命令,并让守护进程自己管理套接字文件权限

此外,这可能表明您在以普通用户身份运行docker命令时出现权限错误。解决此问题的最佳实践是将相关用户添加到
docker
组,以便他们可以访问守护进程

sudo usermod -a -G docker myUser
如果你还真的需要更换插座烫发。 也就是说,您的确切问题有一个直接的答案,并且可以更改守护进程在启动时使用的套接字权限

下面的解决方案适用于使用
systemd
管理的守护程序(如果使用不同的init系统,请根据您的特定init系统进行调整)警告:此类权限将允许系统上的任何用户与docker守护进程通信

  • 为systemd的自定义docker套接字配置创建目录
    sudo mkdir /etc/systemd/system/docker.socker.d
    
  • 使用自定义套接字模式在该目录中创建一个conf文件
    cat <<EOF | sudo tee /etc/systemd/system/docker.socker.d/socketPerms.conf
    > [Socket]
    > SocketMode=0666
    > EOF
    
  • 重新启动docker服务
    sudo systemctl restart docker.service
    

  • 为什么需要运行此命令?这些权限是由docker deamon自己处理的,您不应该弄乱它们。您使用哪个用户运行docker命令?您是否将该用户添加到
    docker
    组(即
    usermod-a-G docker-yourUser
    )中?
    sudo systemctl restart docker.service