相关疑难解决方法(0)

了解 Docker 用户/uid 创建

即使经过大量材料和 SO 答案,我仍然不清楚 docker uid/user 使用或实现。

我理解以下几点:

  1. 图像的实例称为容器。
  2. uid/gid 由底层内核维护,而不是由容器维护。
  3. 内核理解 uid/gid 编号而不是用户名/组名,名称是别名,仅供人类阅读。
  4. 所有容器都是由 docker 守护进程维护的进程,并且将在主机中作为进程可见 (ps -ef)
  5. root (id = 0) 是容器内的默认用户,这可以通过 Dockerfile 中的 USER 指令或通过在 docker run 中传递 -u 标志来更改

综上所述,当我的 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 中的增量如何发生。

任何指针都会有所帮助。

containers docker dockerfile

6
推荐指数
1
解决办法
4042
查看次数

使用 docker exec 时的权限最佳实践

我正在学习 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)

docker

1
推荐指数
1
解决办法
2367
查看次数

标签 统计

docker ×2

containers ×1

dockerfile ×1