如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
setcap-static是setcap(8)的静态链接精简版本,用于设置指定文件的capabilities(权限能力)。它专为无依赖的scratch镜像设计,解决容器化应用在最小权限原则下需要特定root权限的场景。
scratch等极简镜像中直接运行/!开头(如/!setcap-static),操作成功后会自动删除自身,避免在目标镜像中遗留额外文件scratch构建的极简镜像中,无法使用动态链接的标准setcap工具COPY命令不保留扩展属性导致capabilities丢失的问题bashcmake -S . -B build -DCMAKE_BUILD_TYPE=MinSizeRel cmake --build build --config MinSizeRel
bashsetcap-static <capabilities> <filename>
参数说明
<capabilities>:符合cap_from_text(3)语法的capabilities字符串,如cap_net_bind_service=+ep(允许绑定低端口)<filename>:目标文件路径,必须为实际文件(不支持符号链接)当setcap-static的执行路径前两个字符为/!(如/!setcap-static)时,成功设置capabilities后会自动删除自身。此特性适用于scratch镜像,避免遗留工具文件。
Docker的COPY命令不保留扩展属性,直接复制在构建阶段设置好capabilities的文件到scratch镜像会失效:
DockerfileFROM docker.xuanyuan.run/alpine:3.13 as build # 构建应用... RUN \ apk add --no-cache libcap \ && setcap 'cap_net_bind_service=+ep' my-cool-application \ # 构建阶段设置capabilities && apk del --no-cache libcap FROM docker.xuanyuan.run/scratch COPY --from=build /path/to/my-cool-application /my-cool-application # 扩展属性丢失,capabilities无效
通过setcap-static在目标scratch镜像中设置capabilities:
DockerfileFROM docker.xuanyuan.run/scratch # 复制静态链接的setcap-static,命名以/!开头启用自删除 COPY --from=wildwildangel/setcap-static /setcap-static /!setcap-static # 复制应用程序 COPY --from=build /build/build/tiny-ssh-honeypot /tiny-ssh-honeypot # 设置capabilities并自动删除setcap-static RUN ["/!setcap-static", "cap_net_bind_service=+ep", "/tiny-ssh-honeypot"]
上述配置中,/!setcap-static会在成功为tiny-ssh-honeypot设置cap_net_bind_service=+ep权限后自动删除,最终镜像中仅保留应用程序。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务