首页 > 解决方案 > 我的 EC2 实例上的 var/run/docker.sock 权限问题

问题描述

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

chmod 666 var/run/docker.sock

如何var/run/docker.sock在实例重新启动之间保留文件权限?

标签: dockerjenkins

解决方案


你真的需要这样做吗?

按照我上面的评论。您不应手动运行此类命令,而让守护程序自行管理套接字文件权限。

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

sudo usermod -a -G docker myUser

如果您仍然确实需要更改套接字权限。

话虽如此,您的确切问题有一个直接答案,并且可以更改守护程序在启动时将使用的套接字权限。

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

  1. 为 systemd 的自定义 docker 套接字配置创建一个目录
    sudo mkdir /etc/systemd/system/docker.socker.d
    
  2. 使用自定义套接字模式在该目录中创建一个 conf 文件
    cat <<EOF | sudo tee /etc/systemd/system/docker.socker.d/socketPerms.conf
    > [Socket]
    > SocketMode=0666
    > EOF
    
  3. 重新加载 systemctl 守护程序以捕获配置更改
    sudo systemctl daemon-reload
    
  4. 重启 docker 服务
    sudo systemctl restart docker.service
    

推荐阅读