CentOS Stream 8容器化技术应用
导读:CentOS Stream 8 容器化技术应用与落地 一 适用场景与运行时选型 面向开发与测试:优先使用 Docker CE 或 Podman,上手快、生态完善,适合本地开发、CI/CD 构建与多容器联调。 面向生产编排:以 Contai...
CentOS Stream 8 容器化技术应用与落地
一 适用场景与运行时选型
- 面向开发与测试:优先使用 Docker CE 或 Podman,上手快、生态完善,适合本地开发、CI/CD 构建与多容器联调。
- 面向生产编排:以 Containerd 为容器运行时,配合 Kubernetes 使用,符合云原生主流实践(K8s 自 v1.20+ 起取消对 Docker shim 的维护,直接使用 CRI 对接 Containerd)。
- 系统与服务形态:CentOS Stream 8 是 RHEL 的上游公共开发分支,位于 Fedora 与 RHEL 之间,适合滚动验证新特性;同时需注意其生命周期已于 2024-05-31 结束,生产环境建议规划迁移至 RHEL、Rocky Linux 或 AlmaLinux 等替代发行版。
二 在 CentOS Stream 8 上部署容器运行时
- Docker CE 快速部署(适合开发与单机编排)
- 更新与依赖
sudo dnf update -y & & sudo dnf install -y dnf-plugins-core - 添加仓库并安装
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io - 启动与自启
sudo systemctl enable --now docker - 验证
docker --version & & docker run --rm hello-world - 国内加速(可选)
sudo mkdir -p /etc/docker & & sudo tee /etc/docker/daemon.json < < -‘EOF’
{ “registry-mirrors”: [“https://< 你的加速器地址> .mirror.aliyuncs.com”] }
EOF
sudo systemctl daemon-reload & & sudo systemctl restart docker - 免 sudo 使用(可选)
sudo usermod -aG docker $USER & & newgrp docker
- 更新与依赖
- Containerd 部署(适合 Kubernetes 与标准化运行时)
- YUM 安装
sudo dnf install -y yum-utils & & sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo dnf install -y containerd.io - 生成默认配置并启动
sudo mkdir -p /etc/containerd & & containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl enable --now containerd - 验证
ctr version - 可选:安装 nerdctl(Docker 兼容 CLI)与 crictl(K8s CRI 调试工具)以完善日常运维体验。
- YUM 安装
三 典型应用与命令示例
- 应用快速上线(以 Nginx 为例)
- Docker:
docker run -d --name web -p 80:80 nginx:1.24 - Podman(无守护进程、rootless 友好):
podman run -d --name web -p 80:80 nginx:1.24
- Docker:
- 数据持久化与目录挂载
- Docker:
docker run -d --name db -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Passw0rd mysql:8.0 - Podman:
podman run -d --name db -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Passw0rd mysql:8.0
- Docker:
- 多容器编排(Docker Compose)
- 安装:sudo dnf install -y docker-compose-plugin
- 编排示例(docker-compose.yml):
version: “3.8”
services:
web:
image: nginx:1.24
ports: [“80:80”]
volumes: [“./html:/usr/share/nginx/html:ro”]
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: Passw0rd
volumes: [“/data/mysql:/var/lib/mysql”] - 启动:docker compose up -d
- 生产级运行建议
- 镜像与标签:避免使用 latest,使用 明确版本标签;
- 资源限制:为容器设置 CPU/内存 限额,避免资源抢占;
- 日志与监控:集中采集容器日志,监控 CPU/内存/网络/存储 I/O。
四 生产部署与运维要点
- 安全与最小权限
- 优先选择 rootless 容器(Podman)或在容器内以 非 root 用户运行应用;
- 如需 systemd 托管容器,使用 Podman 生成 unit:
podman generate systemd --files --name < 容器名>
sudo cp container-< 容器名> .service /etc/systemd/system/
sudo systemctl daemon-reload & & sudo systemctl enable --now container-< 容器名> .service - SELinux 场景:必要时为挂载目录设置正确的 安全上下文,或使用布尔值/策略模块放行(如 httpd 网络访问场景)。
- Kubernetes 场景(Containerd + K8s)
- 前置:关闭交换分区(swapoff -a 并注释 /etc/fstab 中 swap 项)、确保主机名/MAC/Product UUID 唯一;
- 端口:放行 6443、2379-2380、10250、10259、10257(控制面)与 10250、10256、30000-32767(工作节点);
- 运行时:使用 Containerd 作为 CRI 运行时,按需配置 crictl 进行节点侧调试。
- 故障排查与网络
- 服务状态:systemctl status docker/containerd;日志:journalctl -u docker/containerd;
- 镜像拉取慢:配置 registry-mirrors;
- 端口连通性:ss -lntp | grep < 端口> / telnet/curl 验证;
- 防火墙:firewall-cmd --list-ports 与 --add-port 按需放行。
五 生命周期与迁移建议
- 生命周期提醒:CentOS Stream 8 已于 2024-05-31 结束生命周期,后续不再获得常规更新与修复;若需长期生产支持,建议迁移至 RHEL、Rocky Linux 或 AlmaLinux,并同步评估容器运行时与 Kubernetes 版本的兼容矩阵。
- 迁移要点
- 镜像与构建链:验证现有 Dockerfile/Containerfile 与目标发行版基础镜像的兼容性;
- 仓库与依赖:替换 CentOS 8 Stream 软件源为替代发行版的 BaseOS/AppStream 与 EPEL 源;
- 配置与策略:复核 systemd 单元、SELinux/防火墙策略、日志采集与监控告警规则;
- 渐进式切换:先在测试环境验证,再分批灰度切换生产节点,确保回滚路径可用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Stream 8容器化技术应用
本文地址: https://pptw.com/jishu/787979.html
