即使经过大量材料和 SO 答案,我仍然不清楚 docker uid/user 使用或实现。
我理解以下几点:
综上所述,当我的 Dockerfile 中有以下命令时,我假设my-user将创建一个具有递增 uid的新用户 ( )。
RUN addgroup my-group && adduser -D my-user -G my-group
Run Code Online (Sandbox Code Playgroud)
如果我多次运行同一个镜像,即多个容器,会发生什么?将相同的uid分配给所有进程吗?
如果我在另一个图像中添加相同的上述命令并将该图像作为容器运行会发生什么?- 我会得到新的uid还是uid和以前的一样?
uid与主机相关的 Container 中的增量如何发生。
任何指针都会有所帮助。
我正在学习 Docker 课程,并有一个简单的 Docker 脚本来设置图像:
FROM node:14.16.0-alpine3.13
RUN addgroup app && adduser -S -G app app
USER app
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package*.json ./
RUN npm install
COPY . .
ENV APP_URL=http://api.myapp.com
EXPOSE 3000
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
现在,在脚本中它切换到,USER app但是当我使用 Docker exec 登录时,docker exec -it 187 sh我可以询问它whoami并获得响应:app这是正确的。当我尝试使用 echo 命令写入文件时出现问题:
echo data > data.txt
Run Code Online (Sandbox Code Playgroud)
sh:无法创建 data.txt:权限被拒绝
然后我运行ls -la查看文件和权限:
/app $ ls -la
total 1456
drwxr-xr-x 1 root root 4096 Oct …Run Code Online (Sandbox Code Playgroud)