CentOS Stream 8容器化实践指南
CentOS Stream 8是Red Hat企业级Linux(RHEL)的上游公共开发分支,定位介于Fedora Linux与RHEL之间,适用于需要持续更新、贴近RHEL生态的容器化场景。以下是其容器化实践的核心步骤与注意事项:
在CentOS Stream 8上部署容器前,需先安装Docker(推荐使用社区版)。常见步骤如下:
sudo dnf update -y,确保系统软件包为最新版本;sudo dnf install -y dnf-plugins-core,添加Docker仓库管理工具;sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo引入Docker官方源;sudo dnf install docker-ce --nobest -y(--nobest参数允许选择非最优包版本,避免依赖冲突);sudo systemctl start docker启动服务,sudo systemctl enable docker设置开机自启;docker --version确认Docker已正确安装(输出应包含版本号)。--allowerasing参数解决;容器化实践建议使用--privileged模式(或启动容器时添加该选项),以确保权限充足。若需快速测试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从宿主机连接容器。若需部署特定应用(如Web服务、数据库),建议通过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"]
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简化管理:
version: '3' # 指定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停止并删除服务。yum clean all清理缓存、合并RUN指令(减少镜像层数)、选择轻量级基础镜像(如centos:stream8-minimal),提升构建速度与镜像效率;--privileged(仅在必要时使用),可通过--cap-add添加特定权限(如网络配置权限NET_ADMIN),降低安全风险;volumes挂载数据卷,避免容器删除后数据丢失。