准备阶段要确认三件事:1)购买并配置好 vultr 香港vps(选择合适机房与带宽);2)系统选择与镜像准备,建议使用Ubuntu 22.04或CentOS 7/8并保持内核与内核模块更新;3)网络与安全组规划,例如放通SSH(非默认端口)、容器端口、镜像仓库访问。还要准备好域名与DNS解析,以便后续配置反向代理与证书。
在控制面板创建实例、设置SSH Key登录、更新系统包、配置时区与主机名、调整防火墙(ufw或firewalld)策略,安装基本工具(curl/wget/git)。
示例:sudo apt update && sudo apt upgrade -y;添加用户并设置sudo:adduser dev && usermod -aG sudo dev;启用ufw并放行端口:ufw allow 22/tcp。
确保备份SSH密钥并限制root直接登录,开启自动安全更新或周期性检查系统补丁。
安装Docker建议使用官方脚本或APT仓库,安装后把常用用户加入docker组以免频繁sudo。网络优化方面,可选择bridge模式或macvlan视需求,若运行高并发服务建议开启userland-proxy禁用并使用overlay网络或Calico/Kube-router。
官方安装示例:curl -fsSL https://get.docker.com | sh;添加用户:sudo usermod -aG docker $USER;启动并设置开机自启:sudo systemctl enable --now docker。
将docker数据目录迁移到独立磁盘(/var/lib/docker到挂载盘),配置log-driver为json-file并设置max-size/max-file,或使用fluentd将日志集中到外部系统。
限制Docker API访问、使用非root容器运行、开启镜像扫描并签名镜像,定期拉取官方安全补丁。
小型项目可用docker-compose,中大型或需弹性扩缩的应用建议使用Kubernetes(K3s或kubeadm)。流程包括:编写Compose/YAML、准备镜像并推送到私有或公有镜像仓库、在vps上拉取并启动、配置反向代理(nginx/Traefik)与证书(Let's Encrypt)。
1. 创建docker-compose.yml;2. docker-compose pull && docker-compose up -d;3. 检查容器日志与健康检查。适合单节点部署。
使用k3s:curl -sfL https://get.k3s.io | sh -;kubectl apply -f deployment.yaml;使用Ingress Controller(traefik/nginx)暴露服务并绑定域名与证书。
为保证稳定可考虑使用多节点(多台vultr实例)构成集群,使用外部负载均衡或Cloudflare做流量分发。
安全包含网络、镜像、运行时三方面。网络上限制对外端口,使用防火墙与安全组;镜像保持最小化基础镜像并采用镜像签名和扫描;运行时使用容器隔离、只给必要能力、启用seccomp与AppArmor。备份方面,定期导出容器静态数据卷以及使用快照或rsync到异地存储。
每日数据库备份到对象存储(如S3兼容服务),每周对/var/lib/docker进行快照,关键配置管理用Git存储并加密敏感信息(Vault或SealedSecrets)。
制定恢复文档,包括实例重建步骤、镜像拉取、配置恢复与DNS回切,定期演练RTO与RPO。
启用容器日志集中、SSH登录审计并使用多因子认证(MFA),对关键操作保留审计链路。
常见问题包括镜像拉取慢、端口冲突、内存/CPU瓶颈、磁盘IO阻塞。排查先看容器日志(docker logs / kubectl logs)、主机资源(top、iotop、ss/netstat)与网络连通(ping/traceroute)。
调整Docker cgroups限制(cpu/shares、memory),为数据库容器配置独立磁盘并开启IO调度优化,调整内核参数(如net.core.somaxconn、fs.file-max)以提升并发。
使用多阶段构建缩小镜像体积,采用私有Registry加速拉取,设置健康检查与自动重启策略提高可靠性。
若出现容器频繁重启,查看docker events与systemd日志,确认OOM、权限或端口冲突;若网络不通,则检查iptables/ufw规则与Docker network配置。