1.
准备工作:账号、SSH 与服务器规格
- 注册台湾本地云(例如电信或区域性云服务),创建项目并申请虚拟机实例(建议 Ubuntu 20.04/22.04)。
- 在本地生成 SSH 密钥:ssh-keygen -t rsa -b 4096,上传公钥至云控制台或放入 ~/.ssh/authorized_keys。
- 记录公网 IP、内网 IP、用户名(通常 ubuntu 或 root)与安全组(防火墙)默认规则。
2.
基础系统初始化与安全加固
- 首次登录:ssh -i ~/.ssh/id_rsa ubuntu@IP。
- 更新系统:sudo apt update && sudo apt upgrade -y。
- 创建非 root 用户并加入 sudo:(sudo adduser deploy; sudo usermod -aG sudo deploy),并禁用 root SSH 登录(编辑 /etc/ssh/sshd_config)。
- 设置时区与同步 NTP:sudo timedatectl set-timezone Asia/Taipei; sudo apt install -y chrony; sudo systemctl enable --now chrony。
3.
上传或导入镜像:系统镜像与容器镜像两种路径
- 如果是系统镜像(qcow2/iso):通过云控制台的“自定义镜像上传”功能上传 qcow2,或使用 API/CLI 上传并注册为镜像,然后用该镜像创建实例。
- 如果是容器镜像(.tar):本地打包 docker save -o myapp.tar imagename:tag,然后使用 scp 上传:scp -i id_rsa myapp.tar ubuntu@IP:/home/ubuntu/。在服务器上 docker load -i myapp.tar。
4.
安装 Docker 与常用工具
- 安装官方 Docker:sudo apt-get remove docker docker-engine; sudo apt-get update; sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg; echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null; sudo apt update; sudo apt install -y docker-ce docker-ce-cli containerd.io。
- 将 deploy 用户加入 docker 组:sudo usermod -aG docker deploy。
5.
部署私有镜像仓库(Docker Registry)
- 使用官方 registry 镜像加持 TLS:创建目录并挂载数据:mkdir -p /opt/registry/{data,certs,auth}。
- 获取证书:production:用域名申请 Let's Encrypt;测试或内网可用自签:openssl req -newkey rsa:4096 -nodes -sha256 -x509 -days 365 -keyout /opt/registry/certs/domain.key -out /opt/registry/certs/domain.crt。
- 启动 registry:docker run -d --restart=always --name registry -v /opt/registry/data:/var/lib/registry -v /opt/registry/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2
6.
配置 Docker 使用本地镜像加速与私服
- 编辑 /etc/docker/daemon.json(不存在则新建),示例:{"registry-mirrors":["https://your-local-mirror:443"], "insecure-registries":["your-registry:5000"]}。
- 重启 docker:sudo systemctl daemon-reload && sudo systemctl restart docker。
- 将镜像标记并推送到私服:docker tag local/image:tag your-registry-domain:443/project/image:tag; docker push your-registry-domain:443/project/image:tag。
7.
网络与防火墙设置
- 开放必要端口:SSH 22、HTTP 80(如使用 letsencrypt)、HTTPS 443、Registry 自定义端口(如 5000)。
- 使用 ufw:sudo ufw allow OpenSSH; sudo ufw allow 443/tcp; sudo ufw allow 80/tcp; sudo ufw enable。
- 在云控制台同步安全组规则,限制来源 IP(只允许办公网段访问管理端口)。
8.
持久化存储、备份与快照策略
- 镜像仓库数据要放在独立卷或对象存储:/opt/registry/data 挂载到云块存储(例如扩展磁盘)。
- 定期备份:使用 rsync 或 rclone 将 /opt/registry/data 同步至对象存储或另一台备份服务器;编写 cron:0 2 * * * /usr/bin/rsync -a /opt/registry/data backup@backup-server:/backup/registry。
- 建议开启云磁盘快照策略(每日或按需快照),并验证恢复流程。
9.
监控与日志收集
- 安装基础监控:Prometheus node exporter、Grafana 或使用云厂商监控服务;监控磁盘、CPU、网络与容器状态。
- 日志集中:将 Docker 日志、Registry 日志导出到 ELK/EFK 或云日志服务,方便排查。
10.
问:如何把本地开发的镜像快速同步到台湾云上的私有仓库?
11.
答:步骤示例
- 本地构建并打包:docker build -t myapp:latest . && docker save -o myapp.tar myapp:latest。
- 上传到服务器:scp -i id_rsa myapp.tar ubuntu@IP:/home/ubuntu/。
- 在服务器 docker load -i myapp.tar,然后 docker tag myapp:latest registry.domain:443/project/myapp:latest && docker push registry.domain:443/project/myapp:latest。
12.
问:如果云环境没有公网域名,如何安全部署 Registry?
13.
答:可行方案
- 在内网使用自签证书并在所有客户端 Docker 的 /etc/docker/certs.d/registry-ip:port/ 放置 CA 证书;或者通过 VPN/专线将开发机连入云内网。
- 也可以通过云厂商提供的私有域名或负载均衡器绑定证书,再对外开放白名单。
14.
问:日常运维时如何验证镜像与仓库可用性?
15.
答:验证要点
- 定期执行拉取测试:从另一台干净主机 docker pull registry:tag;检查 md5 或镜像 digest 是否一致。
- 监控仓库磁盘使用、请求错误码(5xx/4xx),并定期清理未使用镜像与触发垃圾回收(registry garbage-collect)。
来源:开发者手册台湾本地云服务器怎么用的镜像部署与环境配置指南