
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该容器继承自travix/gocd-agent-gcloud:latest,并添加了packer包。主要用途是作为GoCD Agent在容器中运行,支持使用gcloud(Google Cloud CLI)和packer(镜像打包工具)执行CI/CD任务。
适用于GoCD持续集成/持续部署系统中,需要执行以下任务的场景:
运行容器的基本命令:
shdocker run -d travix/gocd-agent-gcloud-packer:latest
可通过以下环境变量配置Agent,以适应非默认集群设置:
| 名称 | 描述 | 默认值 |
|---|---|---|
| GO_SERVER | 要连接的GoCD服务器主机名或IP地址 | localhost |
| GO_SERVER_PORT | GoCD服务器的HTTP端口 | 8153 |
| AGENT_MEM | Java虚拟机的-Xms值 | 128m |
| AGENT_MAX_MEM | Java虚拟机的-Xmx值 | 256m |
| AGENT_KEY | 服务器上设置的用于Agent自动注册的密钥 | |
| AGENT_RESOURCES | 自动注册时Agent的资源标签 | |
| AGENT_ENVIRONMENTS | 自动注册时Agent分配到的环境 | |
| AGENT_HOSTNAME | Agent使用的主机名,通常是主机的实际主机名 | |
| DOCKER_GID_ON_HOST | 要挂载Docker socket并无需sudo使用时,需将go用户添加到docker组,通过此变量传入主机的gid |
连接到自定义GoCD服务器
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ travix/gocd-agent-gcloud-packer:latest
启用Agent自动注册
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ -e "AGENT_KEY=388b633a88de126531afa41eff9aa69e" \ travix/gocd-agent-gcloud-packer:latest
设置资源标签、环境和主机名
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ -e "AGENT_KEY=388b633a88de126531afa41eff9aa69e" \ -e "AGENT_RESOURCES=deploy-x,deploy-z" \ -e "AGENT_ENVIRONMENTS=Production" \ -e "AGENT_HOSTNAME=deploy-agent-01" \ travix/gocd-agent-gcloud-packer:latest
挂载Docker Socket(无sudo使用Docker)
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ -e "DOCKER_GID_ON_HOST=$(getent group docker | cut -d: -f3)" \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ travix/gocd-agent-gcloud-packer:latest
注意:在容器中挂载Docker会带来较大安全风险,因为容器将间接访问整个主机。
为持久化工作副本、使用主机SSH密钥等,可挂载以下目录:
| 目录 | 描述 | 重要性 |
|---|---|---|
| /var/lib/go-agent/pipelines | 存放Agent上所有流水线的工作副本 | 通常需要定期清理,无需挂载 |
| /var/log/go-agent | 所有输出日志存放处,同时也会输出到容器标准输出 | 建议从标准输出收集日志 |
| /var/go/.ssh | 用于连接GitHub、Bitbucket等版本控制系统的SSH密钥 | 不建议在容器中嵌入密钥,因此可能需要挂载 |
| /var/go/.gcloud | Google Cloud服务账户密钥文件存放处 | 不建议在容器中嵌入密钥,因此可能需要挂载 |
| /var/run/docker.sock | 挂载主机的Docker socket | 注意:挂载存在安全风险! |
| /usr/bin/docker | 挂载主机的Docker二进制文件 | 注意:挂载存在安全风险! |
挂载卷的示例命令
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ -e "AGENT_KEY=388b633a88de126531afa41eff9aa69e" \ -e "AGENT_RESOURCES=deploy-x,deploy-z" \ -e "AGENT_ENVIRONMENTS=Production" \ -e "AGENT_HOSTNAME=deploy-agent-01" \ -v /mnt/persistent-disk/gocd-agent/pipelines:/var/lib/go-agent/pipelines \ -v /mnt/persistent-disk/gocd-agent/logs:/var/log/go-agent \ -v /mnt/persistent-disk/gocd-agent/ssh:/var/go/.ssh \ -v /mnt/persistent-disk/gocd-agent/gcloud:/var/go/.gcloud \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ travix/gocd-agent-gcloud-packer:latest
权限设置
为确保容器内进程可读写挂载目录,需在主机创建与容器内相同UID/GID的用户和组:
shgroupadd -r -g 999 go useradd -r -g go -u 999 go
然后修改主机目录所有者:
shchown -R go:go /mnt/persistent-disk/gocd-agent/pipelines chown -R go:go /mnt/persistent-disk/gocd-agent/ssh chown -R go:go /mnt/persistent-disk/gocd-agent/gcloud
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务