bash - 在 unix:///var/run/docker.sock 拒绝 Docker 守护进程套接字的权限
问题描述
我有这个Dockerfile
:
FROM chekote/gulp:latest
USER root
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y sudo libltdl-dev
ARG dockerUser='my-user-name';
ARG group='docker';
# crate group if not exists
RUN if ! grep -q -E "^$group:" /etc/group; then groupadd $group; fi
# create user if not exists
RUN if ! grep -q -E "^$dockerUser:" /etc/passwd; then useradd -c 'Docker image creator' -m -s '/bin/bash' -g $group $dockerUser; fi
# add user to the group (if it was present and not created at the line above)
RUN usermod -a -G ${group} ${dockerUser}
# set default user that runs the container
USER ${dockerUser}
我这样构建:
docker build --tag my-gulp:latest .
最后以script
这种方式运行:
#!/bin/bash
image="my-gulp:latest";
workDir='/home/gulp/project';
docker run -it --rm \
-v $(pwd):${workDir} \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
${image} /bin/bash
让我正确登录到 docker 容器,但是当我想查看图像时
docker images
或尝试拉图像
docker pull hello-world:latest
我收到此错误:
尝试在 unix:///var/run/docker.sock 连接到 Docker 守护程序套接字时获得权限被拒绝:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/json:拨打 unix /var/run/docker.sock:连接:权限被拒绝
如何从中创建 docker 映像,chekote/gulp:latest
以便我可以在其中使用 docker 而不会出现错误?
或者错误可能是因为错误的 docker run 命令?
解决方案
避免这种情况的快速方法。将您的用户添加到组中。
sudo gpasswd -a $USER docker
然后设置适当的权限。
sudo setfacl -m user:<your username>:rw /var/run/docker.sock
从那里应该很好。
推荐阅读
- php - 当用户上传内容时,您将如何生成全新的 html 文件?
- java - 确定正确的 Spring Boot 启动器
- reactjs - 有条件地渲染 Font Awesome 图标
- node.js - 来自 Node.js setInterval + mssql 的巨大内存泄漏
- grafana - 在 Grafana 中的表上缩放列值
- html - MS Edge 的问题 - html5 页面上的嵌入式应用程序不加载
- c# - 1 操作获取 lastinsertedID 以使用 EF 进行 2 次插入/添加
- html - Edge 中的 HTML 提交按钮破坏了初始边框,但正确的插入边框
- php - 用 检测到可能的 XSS。回声
- linux - 如何将 OS 文件缓存的脏页刷新到磁盘?