3.3 复习巩固(网络篇)

系列 - 网络与存储配置
目录
摘要
本实验将使用 Docker 容器技术部署一个完整的 WordPress 博客系统,包括 WordPress 应用容器和 MySQL 数据库容器,并了解容器间的网络通信。
实验过程
1.创建桥接网络
首先,我们需要创建一个自定义的桥接网络,使 WordPress 容器和 MySQL 容器能够相互通信。
docker network create mysite-network
验证网络是否创建成功:
docker network ls
执行成功后,应该能看到类似下图的输出,其中包含我们刚刚创建的 mysite-network
网络:
技巧
创建自定义网络的好处是容器可以通过容器名称相互访问,而不需要知道对方的 IP 地址,大大简化了容器间的通信配置。
2.运行 MySQL 容器
接下来,运行 MySQL 数据库容器,它将作为 WordPress 网站的数据存储:
docker run -d \
--name wordpress-mysql \
--network mysite-network \
-e MYSQL_ROOT_PASSWORD=sqlpassword \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=wordpress \
mysql:8.3.0
这个命令做了以下几件事:
- 使用
-d
在后台运行容器 - 将容器命名为
wordpress-mysql
- 将该容器连接到创建的
mysite-network
网络 - 通过环境变量设置 MySQL 的 root 密码、数据库名称、用户名和密码
- 使用 MySQL 8.3.0 版本的镜像
查看容器运行状态:
docker ps
如果一切正常,应该能看到类似下图的输出,显示 MySQL 容器正在运行:
警告
在实际生产环境中,应使用更复杂的密码和适当的数据持久化配置。本实验为了简化,使用了简单密码且没有配置数据持久化。
3.运行 WordPress 容器
现在,我们来运行 WordPress 应用容器:
docker run \
-d --name wordpress \
--network mysite-network \
-p 80:80 \
wordpress
这个命令做了以下几件事:
- 使用
-d
在后台运行容器 - 将容器命名为
wordpress
- 将该容器连接到与 MySQL 容器相同的
mysite-network
网络中 - 使用
-p 80:80
将容器的 80 端口映射到宿主机的 80 端口 - 使用最新的 WordPress 镜像
4.安装 WordPress
现在,我们可以通过浏览器访问 WordPress 安装界面:
1.打开浏览器,输入你的服务器 IP 地址
2.看到以下界面后,将语言切换为"简体中文":
3.输入和数据库相关的信息,其中【数据库主机】可以填写 MySQL 容器的容器名(在同一网络中容器可以通过名称互相访问):
技巧
由于我们使用了自定义的桥接网络,WordPress 容器可以通过容器名
wordpress-mysql
直接访问 MySQL 容器,这是 Docker 自定义网络的一个重要特性。4.填写完成后点击提交并进行安装:
5.输入和站点相关的信息,可以根据个人喜好自由填写:
6.安装完成后,使用设置的用户名和密码进行登录,进入网站后台:
5.在网站中发布一篇文章
安装插件和皮肤后,发布一篇文章
实验后续:测试数据持久性
在容器世界中,一个重要概念是容器本身是临时的,而数据则需要持久化。我们通过以下步骤来验证这一点:
引用
当我们想要升级容器的镜像版本时,会执行下列操作:
- 停止并删除容器(docker stop、docker rm)
- 更新镜像(docker pull)
- 以新镜像运行容器(docker run)
首先,删除现有的两个容器:
docker stop wordpress
docker stop wordpress-mysql
docker rm wordpress
docker rm wordpress-mysql
然后,使用较新版本的 MySQL 镜像重新创建 MySQL 容器:
docker run -d \
--name wordpress-mysql \
--network mysite-network \
-e MYSQL_ROOT_PASSWORD=sqlpassword \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=wordpress \
mysql:8.4.0
接着,重新创建 WordPress 容器:
docker run \
-d --name wordpress \
--network mysite-network \
-p 80:80 \
wordpress
问题
再次打开浏览器访问网站,刚才建立的网站、发布的文章还存在吗?为什么?
数据持久化
由于我们没有为 MySQL 容器配置数据卷(volume),删除容器后其中的数据也一并被删除了。在实际生产环境中,我们需要使用数据卷来持久化存储数据,确保容器删除后数据仍然保留。
附件
学习过程中,可以使用以下资源来丰富你的 WordPress 网站:
技巧
要安装这些资源,可以在 WordPress 后台的"插件"或"外观"菜单中,选择"上传插件/主题"功能,然后上传并激活这些文件。