이것을 실행했을 때 podman run
특히 이상한 오류가 발생했습니다.
❯ podman run -ti --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest
✔ docker.io/rancher/rancher:latest
Trying to pull docker.io/rancher/rancher:latest...
Getting image source signatures
[... blob copying...]
Writing manifest to image destination
Storing signatures
Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs available in user namespace (requested 630384594:600260513 for /usr/bin/etcdctl): Check /etc/subuid and /etc/subgid: lchown /usr/bin/etcdctl: invalid argument
Error: Error committing the finished image: error adding layer with blob "sha256:b4b03dbaa949daab471f94bcfd68cbe21c1147e8ec2acfe3f46f1520db48baeb": Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs available in user namespace (requested 630384594:600260513 for /usr/bin/etcdctl): Check /etc/subuid and /etc/subgid: lchown /usr/bin/etcdctl: invalid argument
무엇인가요"사용자 네임스페이스에 사용 가능한 UID 또는 GID가 충분하지 않을 수 있습니다."이 문제를 어떻게 해결할 수 있습니까?
답변1
--storage-opt ignore_chown_errors=true
이 문제를 해결하려면 chmod 오류를 무시하고 컨테이너가 한 명의 사용자만 지원하도록 강제하는 이를 실행해야 했습니다 . 이에 대한 내용은 다음에서 읽을 수 있습니다."뿌리 없는 Podman이 내 이미지를 가져올 수 없는 이유는 무엇입니까?". 이는 옵션 podman
이 아니라 to 입니다 podman run
. 그래서 그것을 사용하면 다음과 같습니다.
podman --storage-opt ignore_chown_errors=true run [....]
내 경우에는 왜냐면FUSE 버전에 필요한 커널 overlayfs 드라이버가 없습니다( 를 사용하여 설치 sudo apt install fuse-overlayfs
).
podman --storage-opt mount_program=/usr/bin/fuse-overlayfs --storage-opt ignore_chown_errors=true run [....]
답변2
수락된 답변으로 인해 모든 Podman 호출에 대해 동일한 결과를 생성하는 전역 설정을 찾게 되었습니다. Podman은 내가 소유하지 않은 다른 스크립트에 의해 호출되기 때문에 이것은 나에게 매우 중요합니다.
내 시스템에서 주석 처리된 해당 플래그( ignore_chown_errors
) 가 있으므로 파일에 다음 줄을 추가했습니다./etc/containers/storage.conf
ignore_chown_errors = "true"
이 변경으로 인해 시스템의 모든 Podman 호출은 --storage-opt ignore_chown_errors=true
각 호출에 플래그를 추가하지 않고도 제대로 작동하기 시작합니다.
추신: 내 파일 시스템에는 문제가 없으므로 mount_program
해당 구성 파일의 설정을 변경해 보지는 않았지만 모든 호출에서 동일한 전역 효과가 있을 것이라고 가정합니다.