
travix/gocd-agent-gcloud-packer该容器继承自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 |
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ travix/gocd-agent-gcloud-packer:latest
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ -e "AGENT_KEY=***" \ travix/gocd-agent-gcloud-packer:latest
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ -e "AGENT_KEY=***" \ -e "AGENT_RESOURCES=deploy-x,deploy-z" \ -e "AGENT_ENVIRONMENTS=Production" \ -e "AGENT_HOSTNAME=deploy-agent-01" \ travix/gocd-agent-gcloud-packer:latest
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=***" \ -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

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务