CentOS Stream 8的容器化实践
导读:CentOS Stream 8容器化实践指南 CentOS Stream 8是Red Hat企业级Linux(RHEL)的上游公共开发分支,定位介于Fedora Linux与RHEL之间,适用于需要持续更新、贴近RHEL生态的容器化场景。以...
CentOS Stream 8容器化实践指南
CentOS Stream 8是Red Hat企业级Linux(RHEL)的上游公共开发分支,定位介于Fedora Linux与RHEL之间,适用于需要持续更新、贴近RHEL生态的容器化场景。以下是其容器化实践的核心步骤与注意事项:
一、基础环境准备:安装Docker
在CentOS Stream 8上部署容器前,需先安装Docker(推荐使用社区版)。常见步骤如下:
- 更新系统:运行
sudo dnf update -y
,确保系统软件包为最新版本; - 安装依赖包:执行
sudo dnf install -y dnf-plugins-core
,添加Docker仓库管理工具; - 添加Docker官方仓库:通过
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
引入Docker官方源; - 安装Docker引擎:运行
sudo dnf install docker-ce --nobest -y
(--nobest
参数允许选择非最优包版本,避免依赖冲突); - 启动与自启:执行
sudo systemctl start docker
启动服务,sudo systemctl enable docker
设置开机自启; - 验证安装:通过
docker --version
确认Docker已正确安装(输出应包含版本号)。
注:若遇Docker与Podman冲突,可添加--allowerasing
参数解决;容器化实践建议使用--privileged
模式(或启动容器时添加该选项),以确保权限充足。
二、容器化部署:从镜像到运行
1. 快速创建并运行临时容器
若需快速测试CentOS Stream 8环境,可使用docker run
命令直接启动临时容器:
docker run -itd --privileged --name centos-test -p 5022:22 centos:stream8 /usr/sbin/init
-itd
:以交互模式、分配伪终端、后台运行;--privileged
:赋予容器root权限(用于安装软件、配置服务);-p 5022:22
:将宿主机5022端口映射到容器22端口(用于SSH连接);centos:stream8
:使用官方CentOS Stream 8基础镜像。
进入容器后,可执行yum update -y
升级系统、yum install -y openssh-server vim
安装常用工具,配置SSH服务(修改/etc/ssh/sshd_config
取消Port
、PermitRootLogin
等注释,重启服务systemctl restart sshd
),最后通过ssh root@localhost -p 5022
从宿主机连接容器。
2. 使用Dockerfile定制持久化镜像
若需部署特定应用(如Web服务、数据库),建议通过Dockerfile定制镜像,确保环境一致性:
- 创建Dockerfile:在项目目录下新建
Dockerfile
,内容示例如下:使用官方CentOS Stream 8镜像为基础 FROM centos:stream8 设置环境变量(可选) ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 安装所需软件包(如wget、vim) RUN yum update -y & & \ yum install -y wget vim & & \ yum clean all 清理缓存,减小镜像体积 复制本地应用代码到容器(假设项目目录有app文件夹) COPY . /app WORKDIR /app 设置工作目录 暴露应用端口(如8080) EXPOSE 8080 定义启动命令(如运行start.sh脚本) CMD ["bash", "start.sh"]
- 构建镜像:在Dockerfile所在目录运行
docker build -t my-centos-stream8-app .
(-t
指定镜像名称,.
表示当前目录); - 运行容器:通过
docker run -d -p 8080:8080 --name my-running-app my-centos-stream8-app
启动容器(-d
后台运行,-p
映射端口)。
三、进阶实践:多容器编排与管理
若需部署多个关联服务(如应用+数据库),可使用Docker Compose简化管理:
- 创建docker-compose.yaml:在项目根目录新建文件,内容示例如下:
version: & x27; 3& x27; 指定Compose文件版本 services: app: 应用服务 image: my-centos-stream8-app 使用自定义镜像 ports: - "8080:8080" 映射端口 depends_on: 依赖关系(确保db先启动) - db db: 数据库服务(以CentOS Stream 8为基础安装PostgreSQL为例) image: centos:stream8 command: ["bash", "-c", "yum install -y postgresql-server postgresql-contrib & & postgresql-setup initdb & & systemctl start postgresql"] environment: POSTGRES_PASSWORD: mypassword 设置数据库密码 volumes: - postgres_data:/var/lib/pgsql/data 持久化数据(挂载卷) volumes: postgres_data: 定义数据卷
- 启动服务:运行
docker-compose up -d
,Compose会自动构建镜像、启动容器,并处理依赖关系; - 管理服务:通过
docker-compose ps
查看容器状态,docker-compose logs -f app
查看应用日志,docker-compose down
停止并删除服务。
四、注意事项
- 生命周期提醒:CentOS Stream 8已于2024年5月31日结束生命周期(EOL),官方不再提供安全更新。建议尽快迁移至RHEL 8 Stream或替代发行版(如Rocky Linux 9 Stream、AlmaLinux 9 Stream),以避免安全风险;
- 镜像优化:Dockerfile中尽量使用
yum clean all
清理缓存、合并RUN
指令(减少镜像层数)、选择轻量级基础镜像(如centos:stream8-minimal
),提升构建速度与镜像效率; - 权限控制:容器运行时避免过度使用
--privileged
(仅在必要时使用),可通过--cap-add
添加特定权限(如网络配置权限NET_ADMIN
),降低安全风险; - 数据持久化:多容器部署时,若服务需要存储数据(如数据库),务必使用
volumes
挂载数据卷,避免容器删除后数据丢失。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Stream 8的容器化实践
本文地址: https://pptw.com/jishu/715300.html