容器云 Docker 部署实战
一、实验前言
随着云原生技术快速发展,Docker 容器技术已经成为企业应用部署、服务迁移、环境统一的核心工具。本次实验完整实操 Docker 基础命令、私有仓库搭建、Dockerfile 自定义镜像构建、Docker Compose 容器编排、httpd 网页服务部署、Redis 数据库容器化部署全流程。
结合 CentOS 服务器环境,双节点配合操作,从镜像导入、容器创建、端口映射、内部命令操作,到自定义镜像打包、私有仓库上传下载、compose 批量编排服务,一步步落地实操,加深对容器隔离性、镜像分层、容器网络与端口映射的理解。
二、Docker 基础环境与基础命令操作
本次实验环境基于 CentOS 系统,提前部署好 Docker 服务,首先检查 Docker 运行状态与基础环境,保证后续所有操作正常执行。
http://10.90.87.77/lfradius/web/admin/login确认 Docker 服务正常运行,内核、存储驱动、网络模式全部就绪,无报错,具备容器运行基础环境。
2.1 离线导入 httpd 镜像
实验采用离线镜像包部署,使用本地 httpd 压缩镜像文件导入本地镜像库。
执行命令:
docker load -i httpd-2.2.32.tar
docker images
镜像导入成功后,可以在本地镜像列表中看到 httpd:2.2.32 镜像,为后续 web 容器部署做好准备。
2.2 创建并启动 httpd 网页容器
使用 httpd 镜像创建后台运行容器,配置宿主机与容器端口映射,外部通过 8080 端口访问网页服务:
docker run -d -p 8080:80 --name sad_gates httpd:2.2.32
docker ps
容器成功启动,状态为 Up,端口映射 8080:80 生效,容器独立运行,与宿主机环境隔离。
2.3 跨节点访问 web 服务
在客户端节点使用 curl 命令访问服务地址,测试网页服务可用性:
curl http://server:8080
页面返回经典 It works!,证明 httpd 容器服务正常对外提供访问,端口映射配置生效,容器外部网络访问通畅。
2.4 进入容器内部操作
为深入了解容器内部环境,执行交互式命令进入容器内部:
docker exec -it sad_gates /bin/bash
在容器内查看系统版本、网卡信息、网站目录,尝试手动启动 httpd 服务。
可以发现容器内部为独立网络、独立文件系统,手动启动 httpd 提示端口占用,是因为容器默认已后台运行服务,充分体现容器进程隔离特性。
2.5 容器停止与删除测试
实验完成基础测试后,执行容器停止与删除操作,掌握容器生命周期管理:
docker stop 容器ID
docker rm 容器ID
容器删除后,镜像依然保留在本地,实现容器临时运行、镜像持久化存储的特点,方便重复部署。
三、Docker 私有仓库搭建与镜像分发
为实现多节点镜像共享,本次实验搭建本地私有 Registry 仓库,完成镜像打标、推送、跨节点拉取,实现企业内网镜像统一管理。
部署私有仓库容器;
本地镜像打标为私有仓库格式;
推送镜像至 5000 端口私有仓库;
客户端节点配置不信任仓库,拉取镜像并部署。
私有仓库搭建完成后,局域网内所有节点均可拉取仓库内镜像,解决离线环境镜像传输困难的问题,提升批量部署效率。
四、Dockerfile 自定义 Redis 镜像构建
原生官方镜像功能单一,实际工作中需要自定义修改配置、内置环境、修改参数,本次通过编写 Dockerfile 基于 CentOS 基础镜像,自行构建 Redis 自定义镜像。
4.1 编写 Dockerfile 与本地 YUM 源
编写 Dockerfile,配置基础镜像、替换本地 yum 源、安装 redis、修改配置文件,放行所有 IP 连接:
FROM centos:latest
# 替换本地源、安装redis、修改bind地址
4.2 执行镜像构建
使用 build 命令完成分层构建,生成自定义镜像:
docker build -t lxh-redis:v1.1 .
构建过程逐层执行命令,镜像分层存储,减少冗余,构建完成后生成专属 Redis 镜像。
4.3 自定义镜像打包导出
将构建完成的自定义 redis 镜像打包为 tar 文件,用于离线迁移、备份、跨设备传输:
docker save -o lxh-redis.tar lxh-redis:v1.1
五、Docker Compose 容器编排部署 Redis
单条 docker run 命令适合少量容器,多服务场景推荐使用 Docker Compose YAML 文件统一编排管理。
5.1 客户端安装配置 docker-compose
上传二进制文件,添加执行权限,完成 compose 工具安装。
5.2 编写 compose 编排文件
编写 docker-compose.yaml,定义镜像地址、容器名称、端口映射、开机自启策略。
version: '2.0'
services:
redis:
hostname:lxh-redis
container_name:lxh-redis
image: server:5000/lxh-redis:v1.1
ports:
- 6379:6379
restart: always
5.3 启动 Redis 容器服务
执行编排启动命令,后台运行服务:
plaintext
docker-compose up -d
docker ps
redis 容器自动创建、网络配置、端口映射一键完成,运维更加简洁高效。
5.4 Redis 功能实测验证
进入 redis 客户端,执行 set、get 命令测试数据库读写功能:
docker exec -it lxh-redis redis-cli
set name lxh
get name
数据正常写入与读取,自定义 redis 镜像配置无误,服务稳定运行。
六、实验总结与心得体会
本次完整完成 Docker 全流程实操,从最基础的镜像导入、容器创建、端口访问,到私有仓库镜像分发、Dockerfile 自定义镜像制作、Docker Compose 编排部署,内容层层递进,收获非常多。首先,理解了镜像与容器的区别:镜像是只读模板,容器是镜像运行后的可读写实例,容器删除不会影响镜像,适合环境复用。其次掌握了端口映射、容器网络隔离、内部交互式操作,明白了容器轻量化、快速部署、环境一致性的优势。 在自定义镜像环节,学会了 Dockerfile 编写规则,FROM、RUN、CMD、COPY 等指令的作用,理解镜像分层构建原理。私有仓库的搭建让我明白企业内部镜像管理的实际方案,离线环境下镜像打包、导入导出在生产运维中非常实用。 通过 Docker Compose 部署 Redis,体会到编排工具在多服务项目中的重要性,统一配置、一键启停、方便迁移维护,是现代云原生运维必备技能。本次实验也遇到部分问题,例如私有仓库 http 协议需要配置不安全仓库、redis 绑定地址未修改导致外部无法连接、端口冲突服务启动失败等,通过排查配置文件、查看日志、检查端口占用逐一解决,提升了排错能力。
总的来说,Docker 容器化技术极大简化了服务部署与环境维护,本次实操为后续学习 K8s、微服务、云原生架构打下扎实基础,后续会继续深入学习容器网络、数据卷挂载、容器集群管理等进阶内容。
