如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
docker-in-docker-bitbucket-pipelines 是专为 Bitbucket Pipelines 设计的 Docker-in-Docker (DinD) 镜像,旨在提供容器内独立的 Docker 运行环境。该镜像集成 Docker 引擎与 CLI 工具,允许在 Bitbucket CI/CD 流水线中直接执行 Docker 命令,无需依赖宿主机 Docker 环境。
解决 Bitbucket Pipelines 原生环境中缺乏 Docker 守护进程的限制,支持在流水线中完成 Docker 镜像构建、容器运行、镜像推送等操作,无缝衔接容器化应用的自动化构建与部署流程。
docker build、docker run、docker push 等所有标准命令。docker:dind 镜像构建,镜像体积小,启动速度快。docker buildx 实现跨平台镜像构建或多阶段构建(如编译阶段→运行阶段分离)。在 bitbucket-pipelines.yml 中通过 services 配置引入该镜像,作为独立服务提供 Docker 守护进程,主构建容器通过网络连接使用其服务。
基础配置(构建并推送镜像至 Bitbucket 容器仓库)
yamlimage: docker:latest # 主构建容器使用 Docker CLI 镜像 pipelines: default: - step: name: "Build and push Docker image" services: - docker # 引入 DinD 服务(此处需替换为实际镜像名,如 your-registry/docker-in-docker-bitbucket-pipelines:latest) script: # 1. 登录 Bitbucket 容器仓库(使用 Bitbucket 内置环境变量) - docker login -u $BITBUCKET_REGISTRY_USER -p $BITBUCKET_REGISTRY_PASSWORD $BITBUCKET_REGISTRY # 2. 构建镜像(标签格式:仓库地址/项目名/镜像名:提交哈希) - docker build -t $BITBUCKET_REGISTRY/$BITBUCKET_REPO_SLUG:$BITBUCKET_COMMIT . # 3. 推送镜像至仓库 - docker push $BITBUCKET_REGISTRY/$BITBUCKET_REPO_SLUG:$BITBUCKET_COMMIT caches: - docker # 缓存 Docker 层,加速后续构建
高级配置(多阶段构建 + 集成测试)
yamlimage: docker:latest pipelines: branches: main: - step: name: "Build, test and push production image" services: - docker script: # 构建测试镜像 - docker build --target test -t app-test . # 运行容器并执行测试 - docker run --rm app-test npm run test # 构建生产镜像 - docker build --target production -t $BITBUCKET_REGISTRY/app-prod:$BITBUCKET_COMMIT . # 推送生产镜像 - docker push $BITBUCKET_REGISTRY/app-prod:$BITBUCKET_COMMIT
如需在本地复现 Bitbucket Pipelines 环境,可通过 docker run 命令直接启动镜像:
bash# 启动 DinD 容器(需特权模式) docker run -d \ --privileged \ --name bitbucket-dind \ -e DOCKER_TLS_CERTDIR=/certs \ # 启用 TLS 加密 -v dind-certs:/certs/client \ # 挂载证书卷(持久化 TLS 证书) your-registry/docker-in-docker-bitbucket-pipelines:latest # 启动客户端容器,连接 DinD 服务 docker run -it \ --link bitbucket-dind:docker \ # 链接 DinD 容器 -e DOCKER_HOST=tcp://docker:2376 \ # 指定 Docker 守护进程地址 -e DOCKER_TLS_VERIFY=1 \ # 启用 TLS 验证 -e DOCKER_CERT_PATH=/certs/client \ # 指定证书路径 -v dind-certs:/certs/client \ # 挂载共享证书卷 docker:latest \ sh # 进入客户端容器执行 Docker 命令
| 变量名 | 描述 | 默认值 |
|---|---|---|
DOCKER_HOST | Docker 守护进程地址(供客户端连接) | tcp://localhost:2376 |
DOCKER_TLS_CERTDIR | TLS 证书存储目录(为空时禁用 TLS) | /etc/docker/tls |
DOCKER_DRIVER | Docker 存储驱动(如 overlay2、devicemapper) | overlay2 |
DOCKER_OPTS | 传递给 Docker 守护进程的额外参数(如 --log-level=info、--debug) | 空 |
BITBUCKET_REGISTRY | Bitbucket 容器仓库地址(用于镜像推送,可通过 Bitbucket 内置变量获取) | https://docker.bitbucket.org/v2/ |
BITBUCKET_REGISTRY_USER:Bitbucket 容器仓库登录用户名(通常为 $BITBUCKET_USERNAME)。BITBUCKET_REGISTRY_PASSWORD:Bitbucket 容器仓库登录密码(需在 Bitbucket 项目设置→Repository variables 中配置为 Secured 类型)。--privileged)下运行,以确保 Docker 引擎能访问宿主机内核功能(如挂载、网络栈)。caches: [docker] 配置缓存 Docker 层,可显著减少重复构建时间。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务