docker-compose 无法在 VMware Workstation 上的 ubuntu 22.04.3 上更改所有权

docker-compose 无法在 VMware Workstation 上的 ubuntu 22.04.3 上更改所有权

VMware工作站:16.2.5/17.0.2

Ubuntu:20.04.6/22.04.3

Dockerfile:

FROM debian:12.1-slim

WORKDIR /root

RUN groupadd -f ernie-1001 -g 1001 \
    && groupadd -f ernie-1000 -g 1000 \
    && useradd -ms /bin/bash ernie -g 1001 -G 1000 \
    && printf "ernie:ernie" | chpasswd \
    && adduser ernie sudo \
    && printf "ernie ALL= NOPASSWD: ALL\\n" >> /etc/sudoers

在全新的 Ubuntu 22.04.3 安装上,我们运行以下命令序列并期望得到以下输出:

$ sudo apt install docker-compose
$ sudo docker build . -t strange:1.0
$ sudo docker run -it --name strangebase strange:1.0
root@d031fe5152e4:~# su ernie
ernie@d031fe5152e4:/root$ cd
ernie@d031fe5152e4:~$ ls -all
total 20
drwxr-xr-x 2 ernie ernie-1001 4096 Aug 19 04:16 .
drwxr-xr-x 1 root  root       4096 Aug 19 04:16 ..
-rw-r--r-- 1 ernie ernie-1001  220 Apr 23 21:23 .bash_logout
-rw-r--r-- 1 ernie ernie-1001 3526 Apr 23 21:23 .bashrc
-rw-r--r-- 1 ernie ernie-1001  807 Apr 23 21:23 .profile
ernie@d031fe5152e4:~$

我们得到的是:

$ sudo apt install docker-compose
$ sudo docker build . -t strange:1.0
$ sudo docker run -it --name strangebase strange:1.0
root@d031fe5152e4:~# su ernie
ernie@d031fe5152e4:/root$ cd
ernie@d031fe5152e4:~$ ls -all
total 20
drwxr-xr-x 2 root  root 4096 Aug 19 04:16 .
drwxr-xr-x 1 root  root       4096 Aug 19 04:16 ..
-rw-r--r-- 1 root  root  220 Apr 23 21:23 .bash_logout
-rw-r--r-- 1 root  root 3526 Apr 23 21:23 .bashrc
-rw-r--r-- 1 root  root  807 Apr 23 21:23 .profile
ernie@d031fe5152e4:~$

由于某种原因, ernie 主目录(即 /home/ernie)仍然由 ernie 所有root,但情况不应该是这样,不是吗?

我在几台机器上尝试过,结果相同。奇怪的是,之前安装的 ubuntu_22.04 VM 按预期工作。

我还尝试将其放入RUN chown -R ernie:ernie /home/ernieDockerfile 中以进行良好的测量,但无济于事。

我在这里做错了什么吗?最近有人经历过类似的事情吗?

谢谢。

答案1

似乎存在一个特定的错误,即由 docker export 命令创建的 tar 存档缺少所有权信息(所有文件均归 root 所有)。如果此存档随后用于为非特权进程重新创建文件系统(例如通过 docker import 或只是将其解压并 chroot),则它们可能会因权限被拒绝错误或以其他方式失败。

当使用 1.19 之前版本的 Go 构建包时,会发生此错误:此版本的 Go 引入了一个 unix 构建标签,上游使用该标签来确定是否应将 UNIX 特定属性添加到存档中。较旧的 Go 版本默默地忽略此源代码,结果是 tar 存档中缺少 UID 和 GID。

https://bugs.launchpad.net/ubuntu/+source/docker.io-app/+bug/2029523

相关内容