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.0
mysql:8.3
wordpress:6.6
wordpress: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容器:
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.0
上面的命令中:
-d
:在后台运行容器--name mysql
:指定容器名称为mysql--network wordpress-network
:将容器连接到wordpress-network网络-e
:设置环境变量,用于配置MySQL-v mysql-data:/var/lib/mysql
:将mysql-data卷挂载到容器的/var/lib/mysql目录
然后,启动WordPress容器:
docker run \
-d --name wordpress \
--network wordpress-network \
-p 80:80 \
-v wordpress-content:/var/www/html \
wordpress:6.6
上面的命令中:
-p 80:80
:将容器的80端口映射到主机的80端口-v wordpress-content:/var/www/html
:将wordpress-content卷挂载到容器的/var/www/html目录,这是WordPress存储网站文件的位置
启动容器后,验证容器状态是否为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卷是容器化应用中数据持久化的关键技术,掌握它可以帮助你构建更加健壮和可维护的容器化应用。