
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
ImgUtils 是一个基于 Alpine Linux 的 Docker 镜像(nmaguiar/imgutils),集成了一系列容器和 Kubernetes 镜像管理工具。该镜像旨在为 Kubernetes 集群内部提供一站式镜像管理能力,支持镜像复制、容器运行时访问、镜像内容检查等操作。
同时提供精简版本 nmaguiar/imgutils:lite,仅包含核心工具 crictl,适用于仅需容器运行时交互的场景。
https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-build.svg](https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-build.md)
https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-latest.svg](https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-latest.md)
https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-build-lite.svg](https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-build-lite.md)
https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-lite.svg](https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/sec-lite.md)
!https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/build-versions.svg
!https://raw.githubusercontent.com/nmaguiar/imgutils/main/.github/latest-versions.svg
| 环境变量 | 说明 | 默认值 |
|---|---|---|
CONTAINER_RUNTIME_ENDPOINT | 容器运行时接口端点(供 crictl 使用) | unix:///run/containerd/containerd.sock |
Docker 本地运行
直接通过 Docker 运行,挂载 Docker 套接字以访问本地 Docker 守护进程:
bashdocker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock nmaguiar/imgutils sudo /bin/bash
Kubernetes 集群内运行
需通过 kubectl run 在目标节点部署临时 Pod,以下为不同 Kubernetes 环境的部署命令:
前提条件
kubectl get nodes 查看)kube-system 命名空间访问权限)AWS EKS 环境
bashNODENAME=ec2-server-0 NAME=imgutils HPATH=/run/containerd/containerd.sock /bin/sh -c 'kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils\",\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/containerd/containerd.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/containerd/containerd.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
K3S/K3D 环境
bashNODENAME=k3s-server-0 NAME=imgutils HPATH=/run/k3s/containerd/containerd.sock /bin/sh -c 'kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils\",\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/containerd/containerd.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/containerd/containerd.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
OpenShift 环境
bashNODENAME=server-0 NAME=imgutils HPATH=/var/run/crio/crio.sock /bin/sh -c './kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils\",\"securityContext\":{\"privileged\":true},\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/crio/crio.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/crio/crio.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
参数说明:
NODENAME:目标节点名称(需替换为实际节点名)NAME:临时 Pod 名称(自定义,如 imgutils)HPATH:容器运行时套接字路径(根据环境调整,如 containerd 为 /run/containerd/containerd.sock)仅包含 crictl 工具,适用于轻量级容器运行时交互,部署命令与完整版类似,仅需将镜像标签改为 :lite:
AWS EKS 环境
bashNODENAME=ec2-server-0 NAME=imgutils HPATH=/run/containerd/containerd.sock /bin/sh -c 'kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils:lite\",\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/containerd/containerd.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/containerd/containerd.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
K3S/K3D 环境
bashNODENAME=k3s-server-0 NAME=imgutils HPATH=/run/k3s/containerd/containerd.sock /bin/sh -c 'kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils:lite\",\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/containerd/containerd.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/containerd/containerd.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
OpenShift 环境
bashNODENAME=server-0 NAME=imgutils HPATH=/var/run/crio/crio.sock /bin/sh -c './kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils:lite\",\"securityContext\":{\"privileged\":true},\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/crio/crio.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/crio/crio.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
步骤 1:启动 ImgUtils 环境
bash# Docker 本地环境 docker run --rm -ti nmaguiar/imgutils sudo /bin/bash # Kubernetes 集群环境 kubectl run imgutils --rm -ti --image=nmaguiar/imgutils -- sudo /bin/bash
步骤 2:登录源仓库和目标仓库
使用 skopeo login 登录两个仓库(支持 --password-stdin 避免明文密码输入):
bash# 登录源仓库 A skopeo login a.registry -u userA --password-stdin [输入 userA 密码后按 Ctrl+D 确认] # 登录目标仓库 B skopeo login b.registry -u userB --password-stdin [输入 userB 密码后按 Ctrl+D 确认]
步骤 3:复制镜像或 Helm Chart
复制镜像(--all 保留所有平台架构):
bashskopeo copy --all docker://a.registry/some/image:1.2.3 docker://b.registry/some/image:1.2.3
复制 Helm Chart(Helm Chart 通常以 OCI 镜像形式存储):
bashskopeo copy --all docker://a.registry/some/chart:1.2.3 docker://b.registry/some/chart:1.2.3
步骤 4:退出环境
bashexit
步骤 1:启动 ImgUtils 环境
bash# Docker 本地环境 docker run --name imgutils --rm -ti nmaguiar/imgutils sudo /bin/bash # Kubernetes 集群环境 kubectl run imgutils --rm -ti --image=nmaguiar/imgutils -- sudo /bin/bash
步骤 2:将本地文件复制到容器内
Docker 环境:
bashdocker cp myImageOrChart.tgz imgutils:/tmp/myImageOrChart.tgz
Kubernetes 环境:
bashkubectl cp myImageOrChart.tgz imgutils:/tmp/myImageOrChart.tgz
步骤 3:登录目标仓库
bash# 登录目标仓库 B(Helm Chart 需额外登录 Helm 仓库) skopeo login b.registry -u userB --password-stdin [输入 userB 密码后按 Ctrl+D 确认] helm registry login b.registry -u userB --password-stdin [输入 userB 密码后按 Ctrl+D 确认]
步骤 4:复制到仓库
复制镜像文件:
bashskopeo copy --all docker-archive:/tmp/myImage.tgz docker://b.registry/some/image:1.2.3
复制 Helm Chart 文件:
bashhelm push /tmp/myChart.tgz oci://b.registry/some/chart
步骤 5:退出环境
bashexit
通过挂载 Docker 套接字直接与本地 Docker 守护进程交互:
启动容器
bashdocker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock nmaguiar/imgutils sudo /bin/bash
常用操作示例
bash# 查看本地镜像 docker images # 查看运行中容器 docker ps # 删除镜像 docker rmi some/image:latest
退出环境
bashexit
通过 crictl 工具与节点上的容器运行时(containerd/crio)交互,以下为不同环境示例:
AWS EKS 环境(containerd)
bashNODENAME=k3s-server-0 NAME=imgutils HPATH=/run/containerd/containerd.sock /bin/sh -c 'kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils\",\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/containerd/containerd.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/containerd/containerd.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
K3S 环境(containerd)
bashNODENAME=k3s-server-0 NAME=imgutils HPATH=/run/k3s/containerd/containerd.sock /bin/sh -c 'kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils\",\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/containerd/containerd.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"mountPath\":\"/run/containerd/containerd.sock\"}]}],\"volumes\":[{\"name\":\"cri\",\"hostPath\":{\"path\":\"$HPATH\"}}]}}" -- sudo -E /bin/bash'
OpenShift 环境(crio)
bashNODENAME=server-0 NAME=imgutils HPATH=/var/run/crio/crio.sock /bin/sh -c './kubectl run -n kube-system $NAME --rm -ti --image=nmaguiar/imgutils --overrides="{\"apiVersion\":\"v1\",\"spec\":{\"nodeName\":\"$NODENAME\",\"containers\":[{\"name\":\"$NAME\",\"image\":\"nmaguiar/imgutils\",\"securityContext\":{\"privileged\":true},\"stdin\":true,\"stdinOnce\":true,\"tty\":true,\"args\":[\"sudo\",\"-E\",\"/bin/bash\"],\"env\":[{\"name\":\"CONTAINER_RUNTIME_ENDPOINT\",\"value\":\"unix:///run/crio/crio.sock\"}],\"volumeMounts\":[{\"name\":\"cri\",\"
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务