
该容器继承自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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务