【大白学Docker】Docker Swarm 集群部署 Wordpress【实验】

这篇具有很好参考价值的文章主要介绍了【大白学Docker】Docker Swarm 集群部署 Wordpress【实验】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker Swarm 集群部署 Wordpress

1.知识预备

1.1 Docker 集群概念和优势

Docker 集群是由多个 Docker 主机组成的分布式系统,用于协同管理和运行容器化应用程序。

这个集群可以通过 Docker Swarm 或 Kubernetes 等容器编排工具来实现。

Docker 集群的几个概念
  1. 节点(Node): 集群中的物理或虚拟主机,可以运行 Docker 守护进程。
  2. 集群管理器(Cluster Manager): Docker Swarm 或 Kubernetes 等容器编排工具,用于协调和管理整个集群。
  3. 服务(Service): 定义容器应该如何运行的规范,包括镜像、端口映射等。集群管理器根据服务规范在节点上创建和管理容器。
  4. 任务(Task): 服务的实例,是在节点上运行的容器。一个服务可以有多个任务,每个任务都是服务的副本。
  5. 覆盖网络(Overlay Network): 允许容器在不同节点上进行通信的网络。覆盖网络使得在整个集群中容器可以直接互相访问。
Docker 集群优势
  1. 容器化应用部署: Docker 集群提供了一种简化和标准化应用部署的方式。可以使用相同的 Docker 镜像在集群中的不同节点上运行应用。
  2. 可扩展性: 集群可以轻松地扩展,向其中添加新的节点,以应对应用程序的需求增长。这种可扩展性有助于实现高可用性和负载均衡。
  3. 高可用性: Docker 集群具备容错能力,允许容器在集群的多个节点上运行,从而提高应用程序的可用性。如果某个节点发生故障,服务可以在其他节点上继续运行。
  4. 资源利用率: 集群管理器可以有效地分配和管理资源,确保集群中的容器充分利用计算资源,提高资源利用率。
  5. 简化运维: 集群管理器提供了集中式的管理和监控工具,简化了应用程序的部署、更新和扩展。这有助于降低运维成本。
  6. 自动负载均衡: Docker 集群可以自动分发流量到不同节点上的容器,从而实现负载均衡,确保应用程序的高性能和可伸缩性。
  7. 灵活的服务发现: Docker 集群提供了服务发现机制,容器可以通过服务名称而不是 IP 地址进行通信,这使得容器之间的相互调用更为灵活。

1.2 Docker Swarm 介绍

Docker Swarm 是 Docker 官方提供的容器编排工具,用于创建和管理 Docker 容器的集群。

它允许用户轻松地将容器化应用程序部署到分布式环境中,提供高可用性、可扩展性和自动化管理。

它的主要特性实现了以上Docker集群优势,并与 Docker 引擎完全兼容,可通过 Docker CLI 或 API 进行交互。

2.Docker Swarm 部署 Wordpress实验

2.1 实验简介

本次实验主要包含以下几个部分:

  1. 拉取MySQL、Wordpress等镜像;
  2. 准备CentOS 7 虚拟机 (2个节点);
  3. 创建Docker Swarm 集群;
  4. 创建MySQL集群服务(副本为1);
  5. 创建WordPress集群服务(副本为1)。

通过本次实验,可以掌握Docker Swarm部署mysql和wordpress服务的方法,以及相关的运维(排错)能力。

2.2 拉取MySQL、Wordpress等镜像

启动第1个CentOS 7 系统的虚拟机,使用SSH工具(如WindTerm)远程登录控制台,确保互联网通畅。

  1. 拉取 MySQL 镜像:
docker pull mysql:latest
  1. 拉取 WordPress 镜像:
docker pull wordpress:latest
  1. 查看已有的镜像:
#查看本机镜像列表
docker images

#返回结果
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
wordpress    latest    c3c92cc3dcb1   23 months ago   616MB
mysql        latest    3218b38490ce   23 months ago   516MB
centos       7         eeb6ee3f44bd   2 years ago     204MB

说明:

  • 仓库名(Repository):表示镜像的来源仓库,例如mysqlwordpress
  • 标签(Tag):表示镜像的版本或标识符,通常为latest表示最新版本。
  • 镜像ID(IMAGE ID):唯一标识镜像的ID。可以使用这个ID来引用镜像。
  • 创建时间(CREATED):显示镜像的创建时间,例如“x weeks ago”。
  • 大小(Size):显示镜像的大小,以MB为单位。

2.3 准备CentOS 7 虚拟机 (2个节点)

克隆第2个虚拟机,步骤如下:

  1. 打开VMware Workstation主面板。
  2. 选择需要克隆的虚拟机(已关机状态),鼠标右击,选择右侧菜单中的“管理”。
  3. 显示下一级菜单后,点击“克隆”。
  4. 打开克隆虚拟机向导,点击“下一步”。
  5. 选择克隆类型,可以选择完全克隆,也可以选择链接克隆。推荐使用链接克隆,占用的空间会比较小。选择后点击“下一步”。
  6. 设置虚拟机名称(如docker2)和存储路径(可以默认)。
  7. 克隆虚拟机向导会自动完成虚拟机克隆,完成后点击关闭即可。

克隆完成后,新生成的虚拟机与原虚拟机是完全独立的,对新虚拟机的任何操作不会影响原虚拟机。

如果使用其他虚拟化软件如VirtualBox,请参考相关文档。

注意:需先开启第2个虚拟机,可以使用nmtui工具,修改它的IP(如果静态IP设置,同时克隆了第1个虚拟机的IP),然后再启动两个虚拟机。使用SSH工具登录控制台。

2.4 创建Docker Swarm 集群

1.初始化Swarm集群,将第1台虚拟机设置为Swarm管理器。

docker swarm init --advertise-addr 192.168.152.128

返回信息:

Swarm initialized: current node (y7bycpskgtr6myv511fxdt9an) is now a manager.

To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-1twll168at0nih6v9144sogmn9e370i2uuk5pj2l5nu7ly6ly8-cjukx19qqpx59nda8kg6sk29t
192.168.152.128:2377 

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2.在第2台虚拟机(docker2)上,运行

docker swarm join --token SWMTKN-1-1twll168at0nih6v9144sogmn9e370i2uuk5pj2l5nu7ly6ly8-cjukx19qqpx59nda8kg6sk29t 192.168.152.128:2377

返回信息:

This node joined a swarm as a worker.

表示成功。

3.查看节点清单

docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
y7bycpskgtr6myv511fxdt9an *   docker1    Ready     Active         Leader           24.0.6
wui6nf1gy0f7prcht40u2s53g     docker2    Ready     Active                          24.0.6

2.5 创建MySQL集群服务(副本为1)

1.创建MySQL服务
在 Docker Swarm 集群中创建一个新的MySQL 服务。
docker service create --name mysql --publish 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:latest

命令中的各个参数说明如下:

  • docker service create: 这是 Docker Swarm 的命令,用于在 Swarm 集群中创建一个新的服务。
  • --name mysql: 这部分是为这个服务命名,这里的服务名被设置为 mysql
  • --publish 3306:3306: 这部分是端口映射的设置。它将宿主机的 3306 端口映射到容器的 3306 端口。
  • -e MYSQL_ROOT_PASSWORD=123: 这部分是设置环境变量,设置的是 MySQL 的 root 用户的密码为 123
  • mysql:latest: 这部分指定了要使用的 Docker 镜像,这里是 MySQL 的最新版本的 Docker 镜像。

所以,总的来说,这个命令是在 Docker Swarm 集群中创建一个新的 MySQL 服务,使用最新的 MySQL Docker 镜像,将宿主机的 3306 端口映射到容器的 3306 端口,并设置 MySQL 的 root 密码为 123

检查端口是否启动
 ss -ant | grep 3306

#返回结果

LISTEN 0 128 [::]:3306 [::]:*

查看 mysql服务
docker service mysql

ID             NAME          IMAGE          NODE      DESIRED STATE   CURRENT STATE             ERROR     PORTS
ws73osxnel5u   mysql.1       mysql:latest   docker1   Running         Running 22 minutes ago      

#可以看出 mysql容器运行在 docker1主机。

2.准备Wordpress数据库

这里MySQL还没有Wordpress需要的数据库,我们需要手动创建。

进入到MySQL控制台创建数据库

docker exec -it 0eb mysql -uroot -p123

#这里 0eb 是通过 docker ps 发现的 mysql 容器的ID前3位。

执行命令

#创建数据库wordpress

create database wordpress;

#验证数据库

show databases;

#返回结果

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set (0.00 sec)

#退出数据库

exit;

2.6 创建WordPress集群服务(副本为1)

在Docker Swarm集群中创建一个新的WordPress服务。
 docker service create --name wordpress --publish 80:80 -e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123 -e WORDPRESS_DB_HOST=192.168.152.128:3306 wordpress:latest

命令中的各个参数说明如下:

  1. docker service create: Docker Swarm的命令,用于在Swarm集群中创建一个新的服务。
  2. --name wordpress: 为这个服务命名,这里的服务名被设置为wordpress
  3. --publish 80:80: 设置端口映射,将宿主机的80端口映射到容器的80端口。
  4. -e WORDPRESS_DB_NAME=wordpress: 设置环境变量,指定WordPress数据库的名称为wordpress
  5. -e WORDPRESS_DB_USER=root: 设置环境变量,指定WordPress数据库的用户名为root
  6. -e WORDPRESS_DB_PASSWORD=123: 设置环境变量,指定WordPress数据库的密码为123
  7. -e WORDPRESS_DB_HOST=192.168.152.128:3306: 设置环境变量,指定WordPress数据库的主机地址为192.168.152.128,端口号为3306。这意味着WordPress服务将通过该地址和端口连接到数据库,可以使用 ss -ant 查看3306是否有效。
  8. wordpress:latest: 指定要使用的Docker镜像,这里是WordPress的最新版本的Docker镜像。
验证服务

1.使用 ss -ant 查看两个主机,会发现,虽然MySQL、Wordpress容器各自运行在不同主机,但2个主机都存在 80、3306端口(这是集群)

2.docker service ls 查看服务状态

ID             NAME        MODE         REPLICAS   IMAGE              PORTS
mexx0zegxnaw   mysql       replicated   1/1        mysql:latest       *:3306->3306/tcp
sv733bnjqwxv   wordpress   replicated   1/1        wordpress:latest   *:80->80/tcp

这个信息显示了Swarm中运行的服务的相关信息。

相关参数说明如下:

  1. ID: 这是服务的唯一标识符,由Docker自动生成。例如,mexx0zegxnaw是MySQL服务的ID,sv733bnjqwxv是WordPress服务的ID。
  2. NAME: 这是服务的名称,由用户在创建服务时指定。在这个例子中,有两个服务,分别是名为mysql的MySQL服务和名为wordpress的WordPress服务。
  3. MODE: 这显示了服务的运行模式。在这个例子中,两个服务都运行在replicated模式下,这意味着它们都在Swarm集群中的多个节点上运行,以实现高可用性。
  4. REPLICAS: 这显示了服务的副本数。1/1表示期望的副本数和实际运行的副本数都是1。这意味着每个服务都有一个副本在运行。
  5. IMAGE: 这显示了服务使用的Docker镜像。在这个例子中,MySQL服务使用的是mysql:latest镜像,而WordPress服务使用的是wordpress:latest镜像。
  6. PORTS: 这显示了服务的端口映射情况。对于MySQL服务,宿主机的3306端口映射到容器的3306端口;对于WordPress服务,宿主机的80端口映射到容器的80端口。
访问网页

使用浏览器访问192.168.152.128(swarm管理者),可以看到Wordpress的安装界面,根据提示一路操作,Wordpress就能用起来!

wordpress 集群搭建,虚拟化技术,docker,容器,运维

3 问题与解决

3.1 报错:Is the docker daemon running?

一般是docker 服务没有启动,可以使用 systemctl start docker解决。

3.2 报错 error while validating Root CA Certificate

docker swarm join --token SWMTKN-1-1twll***t 192.168.152.128:2377
Error response from daemon: error while validating Root CA Certificate: x509: certificate has expired or is not yet valid: current time 2023-11-29T04:02:21-05:00 is before 2023-11-29T10:14:00Z

解决:是两个虚拟机时间同步问题,可以安装chrony,进行ntp同步解决。

3.3 报错:数据库连不上或网页不能访问(404)

如果通过 ss -ant 没有查看到 3306、80端口开着,说明服务启动不成功。

解决:关闭所有服务,使用 docker service rm <服务名称>, 然后重启docker服务,再逐个启动服务并验证。

3.4 报错:Wordpress 提示 Error establishing a database connection

解决:登录到MySQL容器的MySQL控制台(有点绕口),创建wordpress数据库。

4 疑问

你有没有发现 MySQL服务一旦停止 docker service rm mysql , 再次创建时,里面的wordpress数据库就不见了!

我们思考一下为什么,然后我们又该如何解决呢?文章来源地址https://www.toymoban.com/news/detail-762227.html

如有疑问、问题请留言。祝好运!

到了这里,关于【大白学Docker】Docker Swarm 集群部署 Wordpress【实验】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker/docker-compose 部署 nginx+mysql+wordpress 实战

    MariaDB 作为后面的关系型数据库,端口号是 3306; WordPress 是中间的应用服务器,使用 MariaDB 来存储数据,它的端口是 80; Nginx 是前面的反向代理,它对外暴露 80 端口,然后把请求转发给 WordPress 。 先来运行 MariaDB 。根据说明文档,需要配置 MARIADB_DATABASE 等几个环境变量,用

    2024年02月10日
    浏览(51)
  • docker与phpstudy两种方式部署wordpress 并 开启伪静态

    实际测试,可能是docker内存限制的缘故,docker部署的会比较卡 wordpress phpstudy phpstudy中伪静态配置 正常访问 WordPress 文章页的 URL 地址为 http://asa/index.php?p=123。变成伪静态就是http://asa/123.html 。 伪静态是相对真实静态来讲的,真实静态会生成一个html或htm后缀的文件,访客能够访

    2024年01月20日
    浏览(48)
  • [云原生1. ] 使用Docker-compose一键部署Wordpress平台

    docker-compose 是实现在单机上对容器集群编排管理的工具。 docker-compose 是基于python开发的,能运行docker的平台,都能用docker-compose编排管理容器。 本质就是在 yaml格式 的 docker-compose配置模板文件 里定义多个容器的启动参数和依赖关系,并使用 docker-compose 根据这个模板文件的配

    2024年02月07日
    浏览(40)
  • 【Docker从入门到入土 5】 使用Docker-compose一键部署Wordpress平台

    YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。 类似于 json 数据描述语言,语法比 json 简单的很多。 YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。 语法特点 区分大

    2024年02月03日
    浏览(49)
  • 使用 Docker Swarm(集群) 和Docker Stack(堆栈)部署容器化应用

    说到集群,第一个想到的就是k8s,但docker官方也提供了集群和编排解决方案,它允许你将多个 Docker 主机连接在一起,形成一个“群集”(Swarm),并可以在这个 Swarm 上运行和管理你的服务。 与Kubernetes相比,Docker Swarm的群集管理功能相对简单,Swarm更适合于小型到中型的容器

    2024年04月25日
    浏览(34)
  • 使用Docker Swarm部署RabbitMQ+HAProxy高可用集群(三节点-镜像模式)

    当前规划中,只启动一个HAProxy服务,主要用来做RabbitMQ节点的负载均衡和代理,但是HAProxy可能会出现单点故障,后续需要启动多个HAProxy节点,然后结合Keepalived来进行 设置虚拟IP 做故障转移 节点名称 节点主机名 IP地址 角色 运行服务 cluster01 cluster01 192.168.12.48 Docker Swarm Mana

    2024年02月14日
    浏览(43)
  • 在 CentOS 7.4 上使用 Docker极速部署 LNMP (Linux, Nginx, MySQL, PHP) 环境和 WordPress

    前置CentOS7条件: 关闭防护墙: setenforce = 0 systemctl stop firewalld 1. 安装 Docker* 如果你的系统中还没有安装 Docker,可以使用以下命令进行安装:   sudo yum install docker 启动 Docker 服务并设置开机自启: sudo systemctl start docker sudo systemctl enable docker 2. 安装 Docker Compose Docker Compose 可以让

    2024年01月17日
    浏览(48)
  • Docker WordPress安装

    今天开发应用程序所需要的不仅仅是编写代码。在每个生命周期阶段,工具之间的多种语言,框架,体系结构以及不连续的接口都会带来极大的复杂性。Docker简化并加速了工作流程,同时使开发人员可以自由选择每个项目的工具,应用程序堆栈和部署环境进行创新。 image: 一

    2024年02月08日
    浏览(36)
  • docker安装WordPress

    安装WordPress是一项常见的任务,使用Docker可以使这个过程更加简单和可靠。下面是使用Docker安装WordPress的详细步骤和注释: 安装Docker和Docker Compose: 前往Docker官方网站(https://www.docker.com/)下载适合你操作系统的Docker安装程序,并按照说明进行安装。 Docker Compose是Docker的一个

    2024年02月13日
    浏览(37)
  • Docker 搭建 LNMP + Wordpress(详细步骤)

    目录 一、项目模拟 1. 项目环境 2. 服务器环境  3.任务需求 二、Linux 系统基础镜像  三、Nginx 1. 建立工作目录 2. 编写 Dockerfile 脚本  3. 准备 nginx.conf 配置文件   4. 生成镜像   5. 创建自定义网络  6. 启动镜像容器   7. 验证 nginx   四、Mysql  1. 建立工作目录 2. 编写 Dockerfi

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包