作者:此女人不嫁_ | 来源:互联网 | 2022-11-30 17:52
我有这个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的Docker守护程序套接字时获得权限被拒绝:///var/run/docker.sock:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/json:拨打unix /var/run/docker.sock:connect:权限被拒绝
如何从这里创建docker镜像chekote/gulp:latest
我可以在其中使用docker而不会出现错误?
或者错误是因为错误的docker run命令?
1> R J..:
避免这种情况的快速方法.将您的用户添加到该组.
sudo gpasswd -a $USER docker
然后设置适当的权限.
sudo setfacl -m user::rw /var/run/docker.sock
从那里应该是好的.
这样可以节省一天!
应该在顶部,辉煌!
2> David Maze..:
权限匹配仅在数字用户ID和组ID上发生。如果套接字文件的模式为0660,并由用户ID 0和组ID 32拥有,并且您以用户ID 1000和组ID 1000和16的用户身份对其进行调用,则是否有一个/etc/group
文件名为gid 32 docker
另一个名字叫16。数字编号不同,您无法访问该文件。另外,由于Docker组的实际数字差异在不同的系统中会有所不同,因此您无法将其纳入Dockerfile中。
许多Docker映像只是以root身份运行;如果这样做,则无论其权限如何,他们都可以访问绑定安装的Docker套接字文件。
如果您以非root用户身份运行,则可以使用该docker run --group-add
选项为有效用户添加(数字)gid;它不需要在/etc/groups
文件中特别提及。在Linux主机上,您可以运行:
docker run --group-add $(getent group docker | cut -d: -f3) ...
通常,您不会安装sudo
在Dockerfile中(不适用于非交互式程序,由于容器的短暂性质,您通常不会在交互式shell中做很多事情,并且总docker exec -u 0
可以获取root用户权限)外壳程序),虽然通常认为最佳做法是安装一些非root用户。您可以将Dockerfile减少为
FROM node:8
RUN apt-get update
# Trying to use the host's `docker` binary may not work well
RUN apt-get install -y docker.io
# Install the single node tool you need
RUN npm install -g gulp
# Get your non-root user
RUN adduser myusername
# Normal Dockerfile bits
WORKDIR ...
COPY ...
RUN gulp
USER myusername
CMD ["npm", "run", "start"]
(那泊坞窗基本图像有一 对夫妇 的 事情是真的不匹配泊坞窗的最佳做法,似乎并没有被定期更新;我只是使用标准的node
图像为基础,并添加你需要在一个构建工具顶部)。