
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
[Tianon(Docker 项目成员)]
[Docker 社区 Slack] 、[Server Fault] 、[Unix & Linux] 或 [Stack Overflow]
(关于“共享标签”与“基础标签”的区别,参见 [FAQ] )
28.5.1-cli, 28.5-cli, 28-cli, cli, 28.5.1-cli-alpine3.22]28.5.1-dind, 28.5-dind, 28-dind, dind, 28.5.1-dind-alpine3.22, 28.5.1, 28.5, 28, latest, 28.5.1-alpine3.22]28.5.1-dind-rootless, 28.5-dind-rootless, 28-dind-rootless, dind-rootless]28.5.1-windowsservercore-ltsc2025, 28.5-windowsservercore-ltsc2025, 28-windowsservercore-ltsc2025, windowsservercore-ltsc2025]28.5.1-windowsservercore-ltsc2022, 28.5-windowsservercore-ltsc2022, 28-windowsservercore-ltsc2022, windowsservercore-ltsc2022]28.5.1-windowsservercore, 28.5-windowsservercore, 28-windowsservercore, windowsservercore:
28.5.1-windowsservercore-ltsc2025]28.5.1-windowsservercore-ltsc2022][[]]
(详情参见 [官方说明] )
[amd64] , [arm32v6] , [arm32v7] , [arm64v8] , [windows-amd64]
[repo-info 仓库的 repos/docker/ 目录] ([历史记录] )
(包含镜像元数据、传输大小等)
[official-images 仓库的 library/docker 标签]
[official-images 仓库的 library/docker 文件] ([历史记录] )
[docs 仓库的 docker/ 目录] ([历史记录] )
尽管通常不建议在 Docker 内部运行 Docker,但仍有一些合理场景(例如 Docker 自身的开发工作)。
Docker 是一个开源项目,通过在 Linux、macOS 和 Windows 上提供操作系统级虚拟化的抽象层和自动化工具,实现应用程序在软件容器中的自动化部署。
使用 Docker-in-Docker 前,建议阅读 Jérôme Petazzoni 的[相关博客文章] ,其中详细介绍了其优缺点及潜在问题。
18.09+ 版本的 dind 镜像会通过环境变量 DOCKER_TLS_CERTDIR 指定的目录自动生成 TLS 证书。
注意:18.09 版本默认禁用此功能(为保证兼容性)。若使用 --network=host、共享网络命名空间(如 Kubernetes Pod)或容器可被网络访问(包括通过网关接口访问 dind 实例中启动的容器),可能存在安全风险(例如主机系统被访问)。建议通过设置 -e DOCKER_TLS_CERTDIR=/certs 启用 TLS,19.03+ 版本默认启用。
启用后,Docker 守护进程将以 --host=tcp://0.0.0.0:2376 --tlsverify ... 启动;禁用时则以 --host=tcp://0.0.0.0:2375 启动。
$DOCKER_TLS_CERTDIR 目录下包含三个子目录:
ca:证书颁发机构文件(cert.pem、key.pem)server:守护进程(dockerd)证书文件(cert.pem、ca.pem、key.pem)client:客户端(docker)证书文件(cert.pem、ca.pem、key.pem,适用于 DOCKER_CERT_PATH)若需从“客户端”容器使用此功能,至少需共享 $DOCKER_TLS_CERTDIR 的 client 子目录(见下文示例)。
如需禁用此行为,可直接覆盖容器命令或入口点运行 dockerd(例如 ... docker:dind dockerd ... 或 ... --entrypoint dockerd docker:dind ...)。
console$ docker run --privileged --name some-docker -d \ --network some-network --network-alias docker \ -e DOCKER_TLS_CERTDIR=/certs \ -v some-docker-certs-ca:/certs/ca \ -v some-docker-certs-client:/certs/client \ docker:dind
注意:--privileged 是 Docker-in-Docker 正常运行的必要参数,但会赋予容器对主机环境的完全访问权限,使用时需谨慎(详见 [Docker 文档] )。
console$ docker run --rm --network some-network \ -e DOCKER_TLS_CERTDIR=/certs \ -v some-docker-certs-client:/certs/client:ro \ docker:latest version
(输出示例略,可显示客户端与服务端版本信息)
console$ docker run --privileged --name some-docker -d \ --network some-network --network-alias docker \ -e DOCKER_TLS_CERTDIR=/certs \ -v some-docker-certs-ca:/certs/ca \ -v some-docker-certs-client:/certs/client \ docker:dind --storage-driver overlay2
参考官方 systemd docker.service 配置,生产环境可考虑调整以下参数:
console$ docker run --privileged --name some-docker -d \ ... \ --ulimit nofile=-1 \ --ulimit nproc=-1 \ --ulimit core=-1 \ --pids-limit -1 \ --oom-score-adj -500 \ docker:dind
部分参数可能受主机 dockerd 限制(例如 --ulimit nofile=-1 可能报错 error setting rlimit type 7: operation not permitted),需根据实际环境调整。
Docker 容器数据存储有两种常见方式:
示例(主机目录挂载):
/my/own/var-lib-dockerconsole$ docker run --privileged --name some-docker -v /my/own/var-lib-docker:/var/lib/docker -d docker:dind
-v /my/own/var-lib-docker:/var/lib/docker 将主机目录挂载为容器内 Docker 数据目录。
docker:<version>默认镜像,适用于临时容器(挂载代码启动应用)或作为基础镜像构建其他镜像。
docker:<version>-rootless无 root 权限变体,实验性特性(详情参见 [docker-library/docker#174] )。
注意:与常规 dind 镜像相同,--privileged 是必要参数([相关说明] 及 [安全说明] )。
基础用法示例:
console$ docker run -d --name some-docker --privileged docker:dind-rootless $ docker logs --tail=3 some-docker # 验证守护进程是否完成证书生成并监听 time="xxx" level=info msg="Daemon has completed initialization" time="xxx" level=info msg="API listen on /run/user/1000/docker.sock" time="xxx" level=info msg="API listen on [::]:2376" $ docker exec -it some-docker docker-entrypoint.sh sh # 进入容器,自动配置 DOCKER_HOST / $ docker info --format '{{ json .SecurityOptions }}' ["name=seccomp,profile=default","name=rootless"]
如需修改 UID/GID,可通过 Dockerfile 调整:
dockerfileFROM docker.xuanyuan.run/docker:dind-rootless USER root RUN set -eux; \ sed -i -e 's/^rootless:x:1000:1000:/rootless:x:1234:5678:/' /etc/passwd; \ sed -i -e 's/^rootless:x:1000:/rootless:x:5678:/' /etc/group; \ chown -R rootless ~rootless USER rootless
docker:<version>-windowsservercoreWindows 不支持嵌套容器,此变体仅包含客户端(需连接现有 Docker 引擎,例如通过 -v //./pipe/docker_engine://./pipe/docker_engine 挂载管道)。
查看 [软件许可信息] 。
与所有 Docker 镜像一样,本镜像可能包含其他软件(如 Bash 等基础组件及依赖),可能适用不同许可协议。
自动检测的附加许可信息可参见 [repo-info 仓库的 docker/ 目录] 。
使用前,请确保遵守所有包含软件的许可协议。
以下是 docker 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
在国内网络环境下,直接使用 docker pull 访问 Docker Hub 官方仓库时,较常遇到连接超时、TLS 握手失败或 registry 响应缓慢等情况。这类问题多与跨境链路质量、运营商策略及客户端 DNS 解析有关,并非单个镜像本身异常。
轩辕镜像提供两种常用加速方式:一是使用公共加速域名 docker.xuanyuan.run 拉取(可参考 登录认证方式);二是在控制台配置 专属域名拉取,将拉取命令中的 registry 前缀替换为分配的专属域名,通常能提升成功率与稳定性。
以 docker 为例,加速拉取命令格式为 docker pull docker.xuanyuan.run/docker:<标签>,请将 <标签> 替换为具体版本。下方「镜像拉取方式」区块提供与本文一致的命令示例,可直接复制使用。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务