
该容器继承自travix/gocd-agent-gcloud:latest,并额外添加了以下软件包:
主要用途是作为GoCD持续集成/持续部署系统的代理节点,专门用于执行需要dotnet或nodejs运行时环境的构建、测试和部署任务。
适用于需要在GoCD环境中执行以下类型任务的场景:
运行该Docker容器的基本命令:
shdocker run -d travix/gocd-agent-gcloud-dotnet:latest
可通过以下环境变量配置代理,以适应非默认的集群设置:
| 名称 | 描述 | 默认值 |
|---|---|---|
| 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_RESOURCES | 自动注册时代理的资源标签 | |
| AGENT_ENVIRONMENTS | 自动注册时代理分配的环境 | |
| AGENT_HOSTNAME | 代理使用的主机名,通常是主机的实际主机名 | |
| DOCKER_GID_ON_HOST | 为了挂载Docker socket并无需sudo使用,需要将go用户添加到docker组;通过此变量传入主机的gid |
连接到自定义GoCD服务器
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ travix/gocd-agent-gcloud-dotnet:latest
使用自动注册密钥
shdocker run -d \ -e "GO_SERVER=gocd.yourdomain.com" \ -e "AGENT_KEY=388b633a88de126531afa41eff9aa69e" \ travix/gocd-agent-gcloud-dotnet: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-dotnet: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-dotnet:latest
注意:在容器内挂载Docker会带来较大安全风险,因为容器将间接获得对整个主机的访问权限。
为了在重启后保留工作副本以及使用主机的SSH密钥,可以挂载以下目录:
| 目录 | 描述 | 重要性 |
|---|---|---|
| /var/lib/go-agent/pipelines | 存放该代理上所有流水线的工作副本 | 通常需要定期清理,因此并非必须挂载 |
| /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-dotnet:latest
权限配置
为确保容器内进程能读写挂载目录,需在主机上创建具有相同gid和uid的用户和组:
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
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务