温馨提示×

CentOS虚拟机中容器技术如何应用

小樊
38
2025-12-21 09:07:47
栏目: 云计算

在 CentOS 虚拟机中应用容器技术的实用指南

一 适用场景与架构选择

  • 在虚拟机里跑容器适合用于开发/测试环境的快速搭建微服务拆分与隔离CI/CD 流水线以及多服务联调,具备启动快、资源占用低、环境一致性强的优势。容器共享宿主机内核,相比虚拟机更轻量,适合在同一台虚拟机上并行运行多个隔离服务。对于需要更强隔离或不同内核的场景,再考虑在虚拟机外层使用 KVM 等虚拟化技术进行主机级隔离。

二 快速落地步骤

  • 准备环境
    • 确认系统为 CentOS 7/8,内核建议 ≥3.10;安装必要工具:sudo yum update && sudo yum install -y yum-utils device-mapper-persistent-data lvm2。如使用虚拟机,建议为虚拟机分配至少 2–4 核 CPU、4–8GB 内存、20GB+ 磁盘,并开启虚拟化引擎。
  • 安装与启动 Docker
    • 添加仓库并安装:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo,随后 sudo yum install -y docker-ce docker-ce-cli containerd.io;启动并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker;验证:docker versiondocker run hello-world
  • 基本配置
    • 推荐存储驱动为 overlay2,编辑 /etc/docker/daemon.json: { “storage-driver”: “overlay2”, “log-driver”: “json-file”, “log-opts”: { “max-size”: “100m”, “max-file”: “3” } } 重启 Docker:sudo systemctl restart docker。如需使用镜像加速器,可在同一配置中加入 "registry-mirrors": ["https://<你的加速器地址>"] 并重启。
  • 运行示例
    • 启动 Nginx 并映射端口:docker run -d --name web -p 8080:80 nginx,在宿主机浏览器访问 http://<虚拟机IP>:8080 验证。

三 编排与多容器应用

  • 使用 Docker Compose 管理多服务(如 Web + DB)
    • 安装 Compose(插件方式):sudo yum install -y docker-compose-plugin 或使用已发布的可执行文件软链到 /usr/bin/docker-compose
    • 示例 docker-compose.yml(注意将数据库密码替换为强口令): version: “3.8” services: web: image: nginx:alpine ports: - “8080:80” volumes: - ./html:/usr/share/nginx/html:ro db: image: mariadb:10.11 environment: MYSQL_ROOT_PASSWORD: StrongPassw0rd! MYSQL_DATABASE: appdb volumes: - db_data:/var/lib/mysql volumes: db_data:
    • 启动与管理:docker compose up -ddocker compose psdocker compose logs -f webdocker compose down。该方式便于在单机上编排前端、后端、数据库等多容器应用,提升交付一致性与可维护性。

四 性能与安全最佳实践

  • 资源配置与资源限制
    • 为虚拟机分配合理资源,避免与宿主机或其他虚拟机争用;在容器内按需限制资源:docker run -d --name app --memory="1g" --cpus="1.5" nginx,防止单容器耗尽资源。
  • 存储与日志
    • 使用 overlay2 存储驱动;配置日志轮转(如 max-sizemax-file),定期清理无用数据:docker system prune -af --volumes,避免磁盘被历史镜像、停止容器和无用卷占满。
  • 网络与端口
    • 默认使用 bridge 网络;如需容器间通过名称互通,可创建自定义桥接网络:docker network create --driver bridge app_net,并在 Compose 中使用该网络。
  • 镜像与合规
    • 优先选择精简基础镜像(如 Alpine)减小攻击面与体积;生产环境避免使用 latest 标签,明确版本;必要时搭建私有镜像仓库并配置镜像签名与可信源,提升供应链安全。

0