Docker部署ArgoCD:从零开始
准备工作:确认 Docker 环境
在开始 Docker 部署 ArgoCD 之前,请确保你的服务器或本地机器已经安装了 Docker 并可以正常执行 docker pull。
如果你是 Windows 或 macOS 用户,建议先安装 Docker Desktop;
Linux 用户直接通过包管理器安装即可。
执行下面命令检查版本,确保 Docker Engine 版本不低于 20.10:
docker --version
另外,ArgoCD 默认需要使用 443 端口,如果该端口已被占用,可以先停掉冲突进程,或者后面通过 -p 参数映射其他端口。
拉取镜像并启动 ArgoCD 容器
ArgoCD 官方提供了 quay.io/argoproj/argocd 镜像,我们用 Docker 直接运行一个单节点服务,适合学习与测试。
打开终端,执行以下命令拉取最新版镜像:
docker pull quay.io/argoproj/argocd:v2.12.0
拉取完成后,启动容器并映射端口:
docker run -d \
--name argocd-server \
-p 8080:8080 \
-p 443:443 \
quay.io/argoproj/argocd:v2.12.0
参数说明:
-d:后台运行--name:容器名称-p 8080:8080:将容器的 API 和 UI 端口 8080 映射到宿主机-p 443:443:将 HTTPS 端口映射出来(可选)
如果服务器有防火墙,记得放行 8080 和 443 端口。
阿里云、腾讯云等云厂商需在安全组中添加规则。
获取初始密码并登录 UI
容器启动后,ArgoCD 会生成一个随机初始密码。
通过以下命令查看:
docker exec argocd-server argocd admin initial-password
执行后你会看到类似 xxxxxxxx 的一串字符。
复制它。
现在打开浏览器,访问 http://你的服务器IP:8080。
如果在本机,用 http://localhost:8080。
注意:ArgoCD 默认使用自签名 HTTPS 证书,所以部分浏览器会提示不安全。
点击“高级” -> “继续前往”即可。
之后会跳转到登录页面。
默认用户名是 admin,密码就是刚才获取的那串随机字符串。
登录后,建议立即修改密码:点击右上角用户图标 -> 设置 -> 账户 -> 修改密码。
高频问题与避坑说明
1. 容器无法启动 / 端口被占用
如果看到 Error response from daemon: driver failed programming external connectivity...,说明 443 或 8080 端口已被占用。
可以改用其他端口启动:
docker run -d --name argocd-server -p 8443:8080 quay.io/argoproj/argocd:v2.12.0
之后访问 http://IP:8443 即可。
2. 获取初始密码时报错 "argocd: not found"
这是因为容器内的 argocd 二进制路径问题。
可以用更稳妥的方法直接查看密码文件:
docker exec argocd-server cat /etc/argocd/initial-admin-secret
3. ArgoCD 总是重定向到 HTTPS
如果你只用 HTTP 访问,可以修改容器内的配置。
但对于测试环境,忽略告警即可,不影响使用。
4. 无法连接 Git 仓库
ArgoCD 容器默认无法直接访问公网 Git 仓库?
实际上容器内已有网络,只要宿主机能连通外网,ArgoCD 就可以拉取代码。
如果经常连接超时,可以尝试重启容器或更换镜像源。
验证 GitOps 功能是否正常
登录 ArgoCD 后,我们来做一个最简单的验证:创建一个空应用。
点击页面上的“+ NEW APP”,填写:
- Application Name:随便,例如
test-app - Project:保持
default - Sync Policy:选择
Automatic(可选) - Repository URL:使用公开的测试仓库,比如
https://github.com/argoproj/argocd-example-apps.git - Path:填
guestbook(这个示例应用在仓库的guestbook目录下) - Cluster URL:默认
https://kubernetes.default.svc(代表本地集群,这里实际上没有集群,但 ArgoCD 会尝试连接,会出现警告,不影响 UI 功能验证) - Namespace:
default
点击“CREATE”,然后点击应用名称进入详情页。
即使无法真正部署(因为没有 K8s 集群),你也能看到 ArgoCD 成功解析了仓库内容,说明 Docker 环境下的 ArgoCD 服务运行正常。
如果你有现成的 Kubernetes 环境(比如 Minikube 或 kind),可以把 ArgoCD 的 --insecure 参数加上,然后真正尝试同步应用。
本文仅验证 Docker 部署本身是否成功。
总结
通过以上步骤,你已经完成了 Docker 部署 ArgoCD 的全流程。
整个过程不依赖 Kubernetes,适合零基础用户理解 ArgoCD 的基本概念和操作界面。
后续如果需要投入生产,建议迁移到真正的 K8s 集群,并配置持久化数据和 TLS 证书。
遇到任何报错,优先检查端口映射、密码文件是否存在以及 Docker 版本,绝大多数问题都可以通过重新拉取镜像或更换启动参数解决。