ハード再起動後にユーザーが死んで実行中のpodman - メソッドに無効な400 URI失敗メッセージが表示される:グループを設定できません - setgroups(22:無効な引数)

ハード再起動後にユーザーが死んで実行中のpodman - メソッドに無効な400 URI失敗メッセージが表示される:グループを設定できません - setgroups(22:無効な引数)

私はここで何が起こっているのかを確認しようとしています。ユーザースペースで実行されているPodmanは正常に動作しましたが、サーバーはハード再起動され、現在より正確な技術評価が不足して停滞しました。

[grant@patches2 patches]$     podman build       --tag local/patches-python:latest       --squash-all       -f ${SCRIPT_DIR}/python_container/Dockerfile.python       --build-arg "PYTHON_CONTAINER_DIR=podman-build/python_container"       ${TOP_DIR}
[1/2] STEP 1/7: FROM python:3.12.0a7-slim-bullseye AS builder
[1/2] STEP 2/7: ARG PYTHON_CONTAINER_DIR
[1/2] STEP 3/7: WORKDIR /app
[1/2] STEP 4/7: RUN apt-get update && apt-get install -y build-essential libffi-dev
E: setgroups 65534 failed - setgroups (22: Invalid argument)
E: setegid 65534 failed - setegid (22: Invalid argument)
Reading package lists...
E: setgroups 65534 failed - setgroups (22: Invalid argument)
E: setegid 65534 failed - setegid (22: Invalid argument)
E: Method gave invalid 400 URI Failure message: Failed to setgroups - setgroups (22: Invalid argument)
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (112)
Error: building at STEP "RUN apt-get update && apt-get install -y build-essential libffi-dev": while running runtime: exit status 100
[grant@patches2 patches]$ cat /etc/subuid
root:200000:1001
grant:200000:1001
[grant@patches2 patches]$ cat /etc/subgid
root:200000:1001
grant:200000:1001
[grant@patches2 patches]$ podman system migrate
[grant@patches2 patches]$     podman build       --tag local/patches-python:latest       --squash-all       -f ${SCRIPT_DIR}/python_container/Dockerfile.python       --build-arg "PYTHON_CONTAINER_DIR=podman-build/python_container"       ${TOP_DIR}
[1/2] STEP 1/7: FROM python:3.12.0a7-slim-bullseye AS builder
[1/2] STEP 2/7: ARG PYTHON_CONTAINER_DIR
[1/2] STEP 3/7: WORKDIR /app
[1/2] STEP 4/7: RUN apt-get update && apt-get install -y build-essential libffi-dev
E: setgroups 65534 failed - setgroups (22: Invalid argument)
E: setegid 65534 failed - setegid (22: Invalid argument)
Reading package lists...
E: setgroups 65534 failed - setgroups (22: Invalid argument)
E: setegid 65534 failed - setegid (22: Invalid argument)
E: Method gave invalid 400 URI Failure message: Failed to setgroups - setgroups (22: Invalid argument)
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (112)
Error: building at STEP "RUN apt-get update && apt-get install -y build-essential libffi-dev": while running runtime: exit status 100
[grant@patches2 patches]$ cat /etc/group | grep 65534
nobody:x:65534:

何が問題なのか分からないので、どこに行くべきか少し迷っています。

問題のdockerfileは次のとおりです。

FROM python:3.12.0b4-slim-bookworm AS builder

ARG PYTHON_CONTAINER_DIR

WORKDIR /app

# Install build essentials for compiling C code
RUN apt-get update && apt-get install -y build-essential libffi-dev
RUN pip install --upgrade pip

# Copy files to the working directory
COPY ${PYTHON_CONTAINER_DIR}/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Production stage
FROM python:3.12.0b4-slim-bookworm

ARG PYTHON_CONTAINER_DIR

WORKDIR /app

# Copy files from the build stage
COPY --from=builder /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/
COPY ${PYTHON_CONTAINER_DIR}/generate_certificates.py .
COPY ${PYTHON_CONTAINER_DIR}/generate_certificates_entrypoint.sh .
COPY ${PYTHON_CONTAINER_DIR}/configure_nginx.py .
COPY ${PYTHON_CONTAINER_DIR}/configure_nginx_entrypoint.sh .
COPY ${PYTHON_CONTAINER_DIR}/import_keys.py .
COPY ${PYTHON_CONTAINER_DIR}/import_keys_entrypoint.sh .
COPY ${PYTHON_CONTAINER_DIR}/helper_functions.py .

RUN chmod +x ./generate_certificates_entrypoint.sh
RUN chmod +x ./configure_nginx_entrypoint.sh
RUN chmod +x ./import_keys_entrypoint.sh

これはおそらくポッドマン内のバグのように見えますか?ここで何を見るべきかわかりません。

更新された subuid/subgid

[1/2] STEP 1/7: FROM python:3.12.0a7-slim-bullseye AS builder
[1/2] STEP 2/7: ARG PYTHON_CONTAINER_DIR
[1/2] STEP 3/7: WORKDIR /app
[1/2] STEP 4/7: RUN apt-get update && apt-get install -y build-essential libffi-dev
E: setgroups 65534 failed - setgroups (1: Operation not permitted)
E: setegid 65534 failed - setegid (22: Invalid argument)
E: seteuid 100 failed - seteuid (22: Invalid argument)
E: setgroups 0 failed - setgroups (1: Operation not permitted)
rm: cannot remove '/var/cache/apt/archives/partial/*.deb': Permission denied
Reading package lists...
W: chown to _apt:root of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (22: Invalid argument)
W: chown to _apt:root of directory /var/lib/apt/lists/auxfiles failed - SetupAPTPartialDirectory (22: Invalid argument)
E: setgroups 65534 failed - setgroups (1: Operation not permitted)
E: setegid 65534 failed - setegid (22: Invalid argument)
E: seteuid 100 failed - seteuid (22: Invalid argument)
E: setgroups 0 failed - setgroups (1: Operation not permitted)
E: Method gave invalid 400 URI Failure message: Failed to setgroups - setgroups (1: Operation not permitted)
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (112)
Error: building at STEP "RUN apt-get update && apt-get install -y build-essential libffi-dev": while running runtime: exit status 100
[grant@patches2 patches]$ cat /etc/subuid
root:200000:1001
grant:200000:65536
[grant@patches2 patches]$ cat /etc/subgid
root:200000:1001
grant:200000:65536
[grant@patches2 patches]$

ベストアンサー1

grant:200000:1001

マップの最後の値は、UIDまたはGIDではなく(UID)の数です。したがって、ここで1001はUID 1001を意味するのではなく、200000から201000の間にマッピング可能な1001値のプールを意味します。

podmanはsetuidmap / setgidmapを使用してユーザーの範囲をマップします。素晴らしい仕事はしません。現在のユーザーは0(ルート)になり、200000から201000(含む)の間の単純な連続範囲は1〜1001にマップされます。

65534> 1001 なのでマップされず、コンテナー内で使用するとエラー (EINVAL) が発生します。

値1001は、ユーザーの作成時にシステムによって生成されるデフォルトではありません。通常の範囲は65536で、従来の2 ^ 16可能な値と互換性があり、これらの問題は発生しません。

最も簡単な修正は、ルートとして編集/etc/subuid/etc/subgid、1001を65536に置き換えて、一般的な65536値の範囲を取得することです。他のユーザーと重複する場合は、使用しない範囲を新しく選択する必要があります。 (現在、あなたのユーザーの2人がそして承認する同じマッピングを持ちます。互いに重なり合うので、責任の観点からは良くありません。

podman run制限された範囲のUID / GIDを使用する他のオプション(--uid-map+--gid-mapまたはelse)がありますが、--usernsすべて以前または途中でrootユーザーに関連しているようです。

おすすめ記事