如何在Ubuntu 22.04系统VPS上部署Docker容器环境

一、系统环境预检与前置准备

在开始安装前,需确保VPS系统满足以下基础条件:

  1. 系统版本验证:通过lsb_release -a命令确认系统为Ubuntu 22.04 LTS(Jammy Jellyfish),其他版本需调整后续安装命令
  2. 存储空间检查:使用df -h查看根分区剩余空间,建议保留至少10GB可用空间
  3. 网络连通性测试:执行ping google.com验证外网访问能力,容器镜像下载依赖稳定网络
  4. 安全组配置:若使用云服务商VPS,需放行22(SSH)、80/443(Web服务)、2375/2376(Docker远程管理)等端口(生产环境建议仅开放必要端口)

二、Docker官方仓库安装流程

1. 卸载旧版本(如有)

  1. sudo apt-get remove docker docker-engine docker.io containerd runc

此步骤确保系统无残留组件,避免版本冲突导致的运行异常。

2. 添加官方GPG密钥

  1. sudo mkdir -p /etc/apt/keyrings
  2. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

密钥验证机制保障软件包来源可信性,建议定期检查密钥有效期。

3. 配置APT仓库源

  1. echo \
  2. "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  3. $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

此处$(lsb_release -cs)自动获取系统代号,确保仓库与系统版本精确匹配。

4. 安装核心组件

  1. sudo apt-get update
  2. sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

建议同时安装docker-compose-plugin以支持新版Compose V2语法,组件版本可通过docker --version验证。

三、生产环境加固配置

1. 镜像加速配置

编辑/etc/docker/daemon.json文件(不存在则创建):

  1. {
  2. "registry-mirrors": [
  3. "https://<镜像加速器地址>",
  4. "https://mirror.baidubce.com"
  5. ],
  6. "exec-opts": ["native.cgroupdriver=systemd"]
  7. }

重启服务使配置生效:

  1. sudo systemctl restart docker

此配置可提升国内网络环境下的镜像拉取速度,建议选择官方认证的镜像加速服务。

2. 非root用户权限配置

  1. sudo usermod -aG docker $USER
  2. newgrp docker # 立即生效无需重启会话

执行docker run hello-world验证权限配置,成功输出表示配置正确。

3. 安全基线设置

  • 禁用Swarm模式(非集群环境):
    1. docker swarm leave --force
  • 限制日志文件大小:
    1. // daemon.json中添加
    2. "log-driver": "json-file",
    3. "log-opts": {
    4. "max-size": "100m",
    5. "max-file": "3"
    6. }
  • 启用TLS认证(远程管理场景):
    1. mkdir -p ~/.docker
    2. openssl req -newkey rsa:4096 -nodes -sha256 -keyout ~/.docker/server-key.pem \
    3. -x509 -days 365 -out ~/.docker/server-cert.pem

四、容器编排工具部署

1. Docker Compose V2安装

  1. sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" \
  2. -o /usr/local/bin/docker-compose
  3. sudo chmod +x /usr/local/bin/docker-compose

验证安装:

  1. docker compose version

2. 基础服务部署示例

创建docker-compose.yml文件:

  1. version: '3.8'
  2. services:
  3. nginx:
  4. image: nginx:latest
  5. ports:
  6. - "80:80"
  7. volumes:
  8. - ./html:/usr/share/nginx/html
  9. redis:
  10. image: redis:alpine
  11. command: redis-server --requirepass yourpassword
  12. ports:
  13. - "6379:6379"

启动服务:

  1. docker compose up -d

通过docker compose ps查看运行状态,docker compose logs查看日志输出。

五、运维监控体系搭建

1. 资源监控方案

  1. docker stats # 实时资源监控
  2. docker system df # 存储空间分析

建议部署Prometheus+Grafana监控栈:

  1. docker run -d --name prometheus -p 9090:9090 \
  2. -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
  3. prom/prometheus

2. 日志集中管理

配置EFK(Elasticsearch+Fluentd+Kibana)日志系统:

  1. # 示例Fluentd配置片段
  2. <source>
  3. @type forward
  4. port 24224
  5. </source>
  6. <match docker.**>
  7. @type elasticsearch
  8. host elasticsearch
  9. port 9200
  10. logstash_format true
  11. </match>

3. 备份恢复策略

  1. # 容器数据备份
  2. docker run --rm --volumes-from my_container -v $(pwd):/backup alpine \
  3. tar czf /backup/my_container_backup.tar.gz /data
  4. # 镜像仓库搭建
  5. docker run -d -p 5000:5000 --restart=always --name registry \
  6. -v /mnt/registry:/var/lib/registry registry:2

六、常见问题处理

  1. 启动失败排查

    • 检查内核模块:lsmod | grep overlay
    • 查看系统日志:journalctl -u docker.service
    • 验证存储驱动:docker info | grep "Storage Driver"
  2. 网络问题解决

    • 测试容器网络:docker run --rm busybox ping 8.8.8.8
    • 重启网络服务:systemctl restart systemd-networkd
  3. 性能优化建议

    • 调整虚拟内存:echo vm.overcommit_memory=1 >> /etc/sysctl.conf
    • 禁用swap分区:swapoff -a
    • 配置CPU调度:echo "GRUB_CMDLINE_LINUX=\"cgroup_enable=memory swapaccount=1\"" >> /etc/default/grub

通过以上系统化部署方案,开发者可在Ubuntu 22.04 VPS上快速构建安全高效的容器环境。建议定期执行docker system prune清理无用资源,并关注官方安全公告及时升级组件版本。对于企业级部署,可考虑集成CI/CD流水线实现容器镜像的自动化构建与部署。