3.4 基础存储配置

准备工作
在开始实验前,我们需要准备一个干净的环境,确保之前的实验不会对本次实验造成影响。
1. 删除以下内容:
- 所有容器(包括运行中的和已停止的)
- 所有镜像
关于删除的命令:
docker rm:删除容器docker rmi:删除镜像docker network rm:删除网络
如果要删除所有容器,可以使用:docker rm -f $(docker ps -aq)
如果要删除所有镜像,可以使用:docker rmi -f $(docker images -q)
2. 创建 wordpress-network 网桥
docker network create wordpress-network
3. 下载镜像:
我们需要准备两个版本的MySQL和WordPress镜像,以便后续模拟升级过程:
mysql:8.0mysql:8.3wordpress:6.6wordpress:6.7
下载完成后,可以使用docker images命令查看已下载的镜像:

实验过程
任务一:部署 WordPress
在这个任务中,我们将使用Docker卷来持久化存储WordPress和MySQL的数据。
1. 创建数据卷
首先,我们需要创建两个卷,分别用于存储MySQL的数据库和WordPress产生的文件:
docker volume create mysql-data
docker volume create wordpress-content
创建完成后,可以使用以下命令查看已创建的卷:
docker volume ls

2. 启动容器并挂载卷
现在,我们将启动MySQL和WordPress容器,并将之前创建的卷挂载到相应的容器中:
首先,启动MySQL容器,按以下要求自写命令:
- 后台运行
- 容器名:mysql
- 网络:连接到 wordpress-network 网桥
- 环境变量:
MYSQL_ROOT_PASSWORD=wordpressMYSQL_DATABASE=wordpressMYSQL_USER=wordpressMYSQL_PASSWORD=wordpress
- 存储挂载:mysql-data 卷挂载到容器内的
/var/lib/mysql - 镜像:mysql:8.0
然后,启动WordPress容器,根据以下要求自写命令:
- 后台运行
- 容器名:wordpress
- 网络:连接到 wordpress-network 网桥
- 端口映射:外部端口80映射到内部端口80
- 存储挂载:wordpress-content 卷挂载到容器内的
/var/www/html - 镜像:wordpress:6.6
启动容器后,验证容器状态是否为UP:

3. 配置WordPress
现在,打开浏览器,访问主机的IP地址(或localhost),你应该能看到WordPress的安装页面。
按照提示完成WordPress的安装,然后安装一些插件、主题,并发布一些文章,以便我们在后续步骤中验证数据是否成功保留。

任务二:模拟升级过程
在实际环境中,我们经常需要升级应用程序和数据库。使用Docker卷可以确保在升级过程中不会丢失数据。
1. 停止并删除正在运行的容器
首先,我们需要停止并删除当前运行的容器:
docker stop wordpress
docker stop mysql
docker rm wordpress
docker rm mysql

2. 使用新版本镜像启动容器
现在,我们将使用新版本的镜像启动容器,同时挂载之前创建的卷,以保留数据。
首先,启动MySQL 8.3容器(从8.0升级到8.3):
docker run -d \
--name mysql \
--network wordpress-network \
-e MYSQL_ROOT_PASSWORD=wordpress \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=wordpress \
-v mysql-data:/var/lib/mysql \
mysql:8.3
然后,启动WordPress 6.7容器(从6.6升级到6.7):
docker run \
-d --name wordpress \
--network wordpress-network \
-p 80:80 \
-v wordpress-content:/var/www/html \
wordpress:6.7
启动新容器后,使用docker ps命令验证容器状态:

3. 验证数据是否保留
最后,打开浏览器,访问主机的IP地址(或localhost),验证WordPress网站是否正常运行,以及之前创建的内容(文章、主题、插件等)是否仍然存在。
总结
通过本实验,你学习了:
- 如何创建和使用Docker卷来持久化容器数据
- 如何在不丢失数据的情况下升级容器应用
- Docker卷在实际应用场景中的重要性
Docker卷是容器化应用中数据持久化的关键技术,掌握它可以帮助你构建更加健壮和可维护的容器化应用。




