Podman可构建标记镜像但无法推送到Google Cloud镜像仓库
问题描述
已配置Google Cloud SDK,Podman可正常构建、标记容器镜像,但推送至Google Artifact Registry时提示未安装docker-credentials-gcloud。执行gcloud components install docker-credential-gcr成功安装组件后,在Python虚拟环境中执行推送操作仍出现凭证读取错误。
相关操作日志:
(.venv) spool@fedora:~/Documents/Projects/Predicting_default podman build -t default-service-fastpai:latest . STEP 1/8: FROM python:3.10-slim STEP 2/8: RUN mkdir /app --> Using cache 2b4db1bf5a55ef647872b0124002c09e52b374e9b21770cc9bcdbba0478b7600 --> 2b4db1bf5a55 STEP 3/8: COPY requirements.txt requirements.txt --> Using cache 988d928eaf37c4a36fc3784e5541e312ecc0dd0821a1e3d28f30f25cdd9f2c58 --> 988d928eaf37 STEP 4/8: RUN pip install --upgrade pip --> Using cache 17bdfbe7dca62ca6b701b0da865ef9c6b80394fb0047478452dc975a77239f68 --> 17bdfbe7dca6 STEP 5/8: RUN pip install -r requirements.txt --> Using cache 023535794e16df9e70973c878e6917a98956089e72cbd790b6d6b3486614b7ee --> 023535794e16 STEP 6/8: COPY app / --> Using cache de1369f0b343665f41a9c3c700468eb0beead97ab42d8c50a7c699443185276d --> de1369f0b343 STEP 7/8: EXPOSE 80 --> Using cache e3e82da4b760f8af6e00cfd483a985c8d66189e566ab52bb84109940b65bf260 --> e3e82da4b760 STEP 8/8: CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "80"] --> Using cache d4ef739224b0395fd3e4cfdc7ed3c9d1cfa7a17f6b915743eed4205ef38c0663 COMMIT default-service-fastpai:latest --> d4ef739224b0 Successfully tagged localhost/default-service-fastpai:latest Successfully tagged europe-west2-docker.pkg.dev/ml-deployment-417517/mldefault/default-service-fastpai:latest d4ef739224b0395fd3e4cfdc7ed3c9d1cfa7a17f6b915743eed4205ef38c0663 (.venv) spool@fedora:~/Documents/Projects/Predicting_default$ podman tag default-service-fastpai europe-west2-docker.pkg.dev/ml-deployment-417517/mldefault/default-service-fastpai (.venv) spool@fedora:~/Documents/Projects/Predicting_default$ podman push europe-west2-docker.pkg.dev/ml-deployment-417517/mldefault/default-service-fastpai
解决建议
修复虚拟环境PATH配置
虚拟环境会隔离系统PATH,先在非虚拟环境下执行which docker-credential-gcr获取工具路径,然后在虚拟环境中把该路径加入PATH:export PATH=$PATH:/path/to/gcloud/components/bin也可以把这条命令添加到虚拟环境的
activate脚本里,确保每次激活环境时自动配置路径。重新关联GCloud凭证与容器工具
在虚拟环境中执行以下命令,让GCloud直接生成Podman可读取的认证配置:gcloud auth configure-docker europe-west2-docker.pkg.dev该命令会更新
~/.docker/config.json文件,Podman默认会读取这个文件的认证信息。手动用访问令牌登录Podman
如果上述方法无效,直接通过GCloud访问令牌登录目标仓库:- 生成访问令牌:
gcloud auth print-access-token - 用Podman登录,用户名填
oauth2accesstoken,密码填上面生成的令牌:podman login europe-west2-docker.pkg.dev -u oauth2accesstoken -p $(gcloud auth print-access-token)
- 生成访问令牌:
确认GCloud SDK在虚拟环境中可用
检查虚拟环境中是否能正常执行gcloud命令,若提示找不到,说明虚拟环境未继承系统的GCloud路径,可将GCloud的bin目录软链接到虚拟环境的bin目录,或者在activate脚本中添加PATH配置。
内容的提问来源于stack exchange,提问作者spoolito
相关产品推荐
相关产品推荐

