VMwareワークステーション:16.2.5/17.0.2
Ubuntu:20.04.6/22.04.3
ドッカーファイル:
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/ernie
また、良い測定のためにDockerfileに入れてみましたが、役に立ちませんでした。
私がここで何か間違っているのでしょうか?最近似たようなことを経験した人はいますか?
ありがとうございます。
答え1
dockerエクスポートコマンドで生成されたtarアーカイブに、所有権情報が欠落している特定のバグがあるようです(すべてのファイルはルートの所有です。)。その後、このアーカイブを使用して権限のないプロセスのファイルシステムを再作成すると(docker importや解凍、chrootingなど)、権限拒否エラーなどが原因で失敗する可能性があります。
このエラーは、Go 1.19より前のバージョンでパッケージをビルドしたときに発生します。このGoバージョンでは、UNIX関連の属性をアーカイブに追加する必要があるかどうかを判断するために、アップストリームで使用されるunixビルドタグが導入されました。以前のGoバージョンでは、このソースコードは自動的に無視されるため、tarアーカイブにUIDとGIDがありません。
https://bugs.launchpad.net/ubuntu/+source/docker.io-app/+bug/2029523。