容器云部署与应用实战:从云主机创建到 Docker 私有仓库全流程
本次容器云课程的学习,让我系统掌握了容器化技术的核心原理与实操流程。我们基于 OpenStack 云计算平台搭建基础云主机环境,完成了 Docker 引擎安装、私有镜像仓库部署、镜像全生命周期管理以及 Web 应用的容器化部署验证。整个过程从底层基础设施到上层应用部署形成了完整闭环,不仅加深了我对容器云 “轻量、可移植、高弹性” 核心优势的理解,也积累了大量解决实际问题的经验。本文将完整记录本次实验的所有步骤、遇到的问题及解决方案,作为本次课程的一课一得总结。
一、实验环境准备
1.1 OpenStack 云主机创建
实验的基础环境基于国基北盛云计算基础架构服务平台搭建。我们首先在平台的 “资源管理 - 云主机” 模块创建了一台云主机:
- 云主机名称:lq
- 云主机类型:test
- 分配浮动 IP:192.168.16.106
- 可用域:nova
云主机创建完成后,我们在本地终端执行ping 192.168.16.106命令验证网络连通性,返回结果显示延迟 < 1ms,TTL=128,说明云主机网络正常,可以进行后续操作。
1.2 云主机网络配置
通过 SSH 连接到云主机后,执行ip a命令查看网卡配置信息,确认 ens33 接口已正确配置 IP 地址192.168.16.106/24,广播地址为192.168.16.255,网络状态为 UP,确保后续 Docker 服务和镜像仓库能够正常对外提供服务。
二、Docker 基础环境安装与配置
2.1 安装 Docker CE 引擎
我们采用 yum 方式安装 Docker 社区版,具体步骤如下:
bash
运行
# 1. 更新系统软件包 yum update -y # 2. 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3. 添加Docker官方yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 4. 安装Docker CE yum install -y docker-ce docker-ce-cli containerd.io # 5. 启动Docker并设置开机自启 systemctl start docker systemctl enable docker # 6. 验证安装是否成功 docker version执行docker version命令后,若能同时显示 Client 和 Server 的版本信息,说明 Docker 引擎安装成功。
2.2 配置 Docker 镜像加速
由于国内访问 Docker Hub 速度较慢,我们配置了阿里云镜像加速器来提升镜像拉取速度:
bash
运行
# 创建Docker配置目录 mkdir -p /etc/docker # 写入加速器配置 cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://你的阿里云加速器地址.mirror.aliyuncs.com"] } EOF # 重启Docker使配置生效 systemctl daemon-reload systemctl restart docker三、Docker 私有镜像仓库搭建
在企业生产环境中,通常会搭建私有镜像仓库来管理内部镜像,保证镜像安全和传输效率。本次实验我们使用官方的 registry 镜像搭建私有仓库。
3.1 拉取 registry 镜像
bash
运行
docker pull registry:23.2 运行私有仓库容器
我们将容器的 5000 端口映射到宿主机的 5000 端口,并将容器内的镜像存储目录挂载到宿主机的/opt/registry目录,实现镜像数据的持久化:
bash
运行
docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ -v /opt/registry:/var/lib/registry \ registry:23.3 配置 Docker 信任私有仓库
由于我们的私有仓库使用 HTTP 协议而非 HTTPS,需要在 Docker 配置中添加信任,否则会出现 “http: server gave HTTP response to HTTPS client” 错误:
bash
运行
# 修改daemon.json文件,添加insecure-registries配置 cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://你的阿里云加速器地址.mirror.aliyuncs.com"], "insecure-registries": ["10.6.3.137:5000"] } EOF # 重启Docker使配置生效 systemctl daemon-reload systemctl restart docker四、镜像的打包、标记、推送与拉取
4.1 准备基础镜像
我们以 Redis 镜像为例,演示镜像的全生命周期管理。首先拉取官方 Redis 镜像:
bash
运行
docker pull redis:latest4.2 标记镜像到私有仓库
使用docker tag命令将本地镜像标记为私有仓库格式,镜像名称格式为仓库地址/镜像名:标签:
bash
运行
docker tag redis:latest 10.6.3.137:5000/htx-redis:v1.14.3 推送镜像到私有仓库
bash
运行
docker push 10.6.3.137:5000/htx-redis:v1.14.4 验证私有仓库镜像
使用 curl 命令查询私有仓库中的镜像列表,确认镜像推送成功:
bash
运行
curl http://10.6.3.137:5000/v2/_catalog返回结果如下,说明 htx-redis 镜像已成功推送到私有仓库:
json
{"repositories":["centos","httpd","registry","htx-redis"]}4.5 从私有仓库拉取镜像
为了验证拉取功能,我们先删除本地的 htx-redis 镜像,再从私有仓库拉取:
bash
运行
# 删除本地镜像 docker rmi 10.6.3.137:5000/htx-redis:v1.1 # 从私有仓库拉取镜像 docker pull 10.6.3.137:5000/htx-redis:v1.1 # 验证拉取成功 docker images五、Web 应用部署与验证
最后,我们部署一个简单的 HTTP Web 应用,验证容器云的应用部署能力。
5.1 拉取 httpd 基础镜像
bash
运行
docker pull httpd:latest5.2 运行 httpd 容器
将容器的 80 端口映射到宿主机的 8080 端口,命名为 my-httpd:
bash
运行
docker run -d -p 8080:80 --name my-httpd httpd:latest5.3 验证应用访问
在本地浏览器中访问http://10.6.3.137:8080,页面显示 “It works!”,说明 HTTPD 应用已成功部署并可以正常访问。
六、学习心得与总结
通过本次容器云部署与应用的完整实验,我收获颇丰:
- 技术能力提升:熟练掌握了 OpenStack 云主机的创建、网络配置和远程连接方法,能够独立完成 Docker 引擎的安装、配置和日常管理,掌握了私有镜像仓库的搭建流程和镜像的打包、标记、推送、拉取全生命周期操作。
- 问题解决能力:实验中遇到了 “HTTP/HTTPS 协议不匹配”、“镜像拉取速度慢”、“端口冲突” 等问题,通过查阅官方文档和社区资料,逐一解决了这些问题,提升了自己排查和解决问题的能力。
- 核心概念理解:深刻理解了容器 “一次构建,到处运行” 的特性,认识到容器云在提高资源利用率、加快应用部署速度、简化运维流程等方面的巨大优势。
容器云技术是当前云计算领域的核心技术之一,本次实验只是入门。未来我将继续学习 Kubernetes 容器编排技术,深入研究容器的网络、存储和安全机制,不断提升自己在云原生领域的技术能力,为今后从事相关工作打下坚实的基础。
