Docker安装部署RabbitMQ

news2024/12/13 2:48:09

1. Docker环境准备

1.1 安装Docker

在开始Docker安装部署RabbitMQ之前,确保您的系统环境已经满足Docker的运行要求。以下是在不同操作系统上安装Docker的步骤和命令行演示。

对于Linux系统

在基于Debian的系统(如Ubuntu)上,您可以使用以下命令来安装Docker:

sudo apt-get update
sudo apt-get install -y docker.io

安装完成后,启动Docker服务并将其设置为开机启动:

sudo systemctl start docker
sudo systemctl enable docker

验证Docker是否正确安装:

docker --version
对于macOS系统

macOS用户可以通过Docker Desktop for Mac来安装Docker。访问Docker Desktop官网下载安装包,按照安装向导完成安装。

安装完成后,打开Docker Desktop应用,它将自动启动Docker服务。

对于Windows系统

Windows 10及以上版本的用户可以通过Docker Desktop for Windows来安装Docker。同样地,访问Docker Desktop官网下载安装包并按照安装向导完成安装。

安装完成后,打开Docker Desktop应用,它将自动启动Docker服务。

验证Docker安装

在任何操作系统上,您可以通过运行以下命令来验证Docker是否已经正确安装并运行:

docker run hello-world

此命令将下载一个测试镜像并在容器中运行,如果Docker安装正确,您将看到欢迎消息。

完成以上步骤后,您的Docker环境就已经准备就绪,可以继续进行RabbitMQ的安装和部署。

2. 拉取RabbitMQ镜像

2.1 拉取最新镜像

为了在Docker环境中部署RabbitMQ,首先需要从Docker Hub拉取RabbitMQ的官方镜像。RabbitMQ提供了多个版本的镜像,包括带有管理界面的版本和不带管理界面的版本。以下是拉取RabbitMQ最新镜像的命令行演示:

docker pull rabbitmq:latest

此命令将从Docker Hub下载RabbitMQ的最新版本镜像。使用latest标签可以确保您获得最新的镜像,但如果您需要特定版本的RabbitMQ,可以通过指定版本号来拉取,例如rabbitmq:3.8.16

2.2 验证镜像

拉取镜像后,您可以通过以下命令来验证是否成功拉取了RabbitMQ镜像:

docker images

此命令将列出本地所有已下载的Docker镜像,您可以在列表中查找rabbitmq相关的条目,确认是否包含您刚刚拉取的镜像。输出结果将显示镜像的REPOSITORY、TAG、IMAGE ID、CREATED、SIZE等信息。例如:

在确认镜像已经成功拉取后,您可以继续进行RabbitMQ容器的创建和配置。这包括设置容器的网络、存储、环境变量等,以确保RabbitMQ容器能够按照您的需求运行。接下来的步骤将详细介绍如何创建并运行RabbitMQ容器。

3. 启动RabbitMQ容器

3.1 创建容器

创建RabbitMQ容器是部署过程中的关键步骤,以下是创建RabbitMQ容器的命令行演示:

docker run -d --name rabbitmq -p 5673:5672 -p 15673:15672 rabbitmq:latest

此命令将创建一个名为rabbitmq的容器,并在后台运行。

-d:参数表示容器将在后台运行,

--name:参数用于指定容器的名称。

-p:参数用于设置端口映射,其中5673:5672表示将容器的5672端口映射到宿主机的5673端口,15673:15672表示将容器的15672端口映射到宿主机的15673端口,这两个端口分别是RabbitMQ的消息接收端口和管理界面端口。

3.2 设置端口映射

端口映射是Docker容器与外部通信的重要配置。以下是如何设置端口映射的详细说明:

  • -p 5673:5672:此参数将容器内部的5672端口映射到宿主机的5673端口,这是RabbitMQ用于接收客户端连接的标准AMQP协议端口。
  • -p 15673:15672:此参数将容器内部的15672端口映射到宿主机的15673端口,这是RabbitMQ的管理界面端口,允许用户通过Web界面管理RabbitMQ实例。

确保宿主机的这些端口没有被其他应用占用,否则会导致端口冲突。

3.3 设置环境变量

在创建RabbitMQ容器时,可以通过设置环境变量来配置RabbitMQ的默认用户、密码以及其他参数。以下是如何设置环境变量的命令行演示:

docker run -d --name rabbitmq -p 5673:5672 -p 15673:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest

在这个命令中,-e参数用于设置环境变量:

  • RABBITMQ_DEFAULT_USER=admin:设置RabbitMQ的默认用户名为admin
  • RABBITMQ_DEFAULT_PASS=password:设置RabbitMQ的默认密码为password

这些环境变量确保了RabbitMQ容器启动时自动配置好默认的用户凭证,方便用户登录管理界面。您可以根据需要修改用户名和密码,以满足安全要求。

4. 验证RabbitMQ服务

4.1 查看容器状态

在RabbitMQ容器创建并运行后,您可以通过查看容器的状态来验证RabbitMQ服务是否正常启动。以下是如何查看容器状态的命令行演示:

docker ps

此命令将列出所有正在运行的容器。在输出结果中,您可以查找名为rabbitmq的容器,确认其STATUS列显示为Up,这表示容器正在正常运行。例如:

[root@bogon /]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                                                                                                                      NAMES
7a462270fd11   rabbitmq:latest   "docker-entrypoint.s…"   8 seconds ago   Up 6 seconds   4369/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:5673->5672/tcp, :::5673->5672/tcp, 0.0.0.0:15673->15672/tcp, :::15673->15672/tcp   rabbitmq

如果容器状态显示为Up,并且端口映射正确,那么RabbitMQ服务已经成功启动。

4.2 查看容器日志

除了查看容器状态外,查看容器日志也是验证RabbitMQ服务是否正常运行的重要步骤。以下是如何查看容器日志的命令行演示:

docker logs rabbitmq

此命令将显示名为rabbitmq的容器的日志输出。通过检查日志,您可以确认RabbitMQ是否启动成功,以及是否有任何错误或警告信息。

如果日志中没有显示错误信息,并且有类似上述的启动完成信息,那么RabbitMQ服务已经成功启动并运行。如果遇到任何问题,日志中通常会提供错误信息或提示,帮助您进行故障排查。

5. 访问RabbitMQ管理界面

5.1 打开管理界面

进入容器内部

[root@bogon /]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                                                                                                                      NAMES
7a462270fd11   rabbitmq:latest   "docker-entrypoint.s…"   13 minutes ago   Up 13 minutes   4369/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:5673->5672/tcp, :::5673->5672/tcp, 0.0.0.0:15673->15672/tcp, :::15673->15672/tcp   rabbitmq
[root@bogon /]# docker exec -it rabbitmq /bin/bash
root@7a462270fd11:/# 

开启web管理页面

root@7a462270fd11:/# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@7a462270fd11:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_prometheus
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@7a462270fd11...
The following plugins have been enabled:
  rabbitmq_management

started 1 plugins.
root@7a462270fd11:/# 

在RabbitMQ容器成功启动后,可以通过浏览器访问其管理界面来监控和管理RabbitMQ实例。以下是如何打开RabbitMQ管理界面的步骤:

  1. 确认宿主机的IP地址或域名。如果您在本地部署,可以使用localhost127.0.0.1。如果您在远程服务器或虚拟机上部署,需要使用相应的IP地址或域名。

  2. 使用浏览器打开RabbitMQ管理界面。默认情况下,管理界面端口为15673。在浏览器地址栏输入以下URL:

    http://<宿主机IP地址>:15673
    

    例如,如果您在本地部署,可以访问:

    http://localhost:15673
    
  3. 等待页面加载完成。如果一切配置正确,您将看到RabbitMQ管理界面的登录页面。

默认账号与密码:guest

5.2 登录默认账户

在RabbitMQ管理界面的登录页面,您需要输入默认的用户名和密码进行登录。以下是登录步骤:

  1. 输入默认的用户名和密码。在创建RabbitMQ容器时,我们通过环境变量RABBITMQ_DEFAULT_USERRABBITMQ_DEFAULT_PASS设置了默认的用户名和密码。如果您没有修改这些环境变量,那么默认的用户名和密码分别是adminpassword。假如你没有设置这个变量,账号与密码:guest

  2. 点击登录按钮。输入正确的用户名和密码后,点击登录按钮,您将进入RabbitMQ管理界面的仪表板。

  3. 管理界面功能概览。登录成功后,您将看到RabbitMQ管理界面的仪表板,这里提供了关于RabbitMQ实例的各种信息,包括节点信息、连接数、队列状态、交换器和绑定等。您可以使用这些工具来监控RabbitMQ的性能,创建和管理队列,以及配置交换器和绑定。

通过以上步骤,您可以成功访问并登录RabbitMQ的管理界面,开始对RabbitMQ实例进行管理和监控。

6. 命令行操作演示

6.1 停止和启动RabbitMQ应用

在Docker中管理RabbitMQ容器的生命周期是一项基本操作,以下是如何停止和启动RabbitMQ容器的命令行演示:

停止RabbitMQ容器

要停止正在运行的RabbitMQ容器,可以使用以下命令:

docker stop rabbitmq

此命令将停止名为rabbitmq的容器。您可以使用docker ps命令查看容器状态,确认容器是否已停止。

启动RabbitMQ容器

如果RabbitMQ容器已经停止,您可以通过以下命令启动它:

docker start rabbitmq

此命令将启动之前停止的名为rabbitmq的容器。启动后,您可以再次使用docker ps命令查看容器状态,确认容器是否已成功启动。

6.2 查看节点状态

查看RabbitMQ节点状态是监控RabbitMQ健康的重要步骤。以下是如何查看节点状态的命令行演示:

docker exec rabbitmq rabbitmqctl status

此命令将进入名为rabbitmq的容器内部,并执行rabbitmqctl status命令,输出RabbitMQ节点的详细信息,包括节点状态、内存使用情况、磁盘空间、Erlang版本等关键信息。输出结果将类似于以下格式:

{
  "nodes": [
    "rabbit@hostname",
    ...
  ],
  "running_nodes": [
    "rabbit@hostname",
    ...
  ],
  "cluster_name": "rabbit@hostname",
  "node_type": "disc",
  ...
}

通过这些信息,您可以了解RabbitMQ节点的运行状态和性能指标。

6.3 添加用户和设置权限

管理RabbitMQ用户和权限是确保消息队列安全的关键操作。以下是如何在RabbitMQ中添加用户和设置权限的命令行演示:

添加用户

要添加一个新的用户,可以使用以下命令:

docker exec rabbitmq rabbitmqctl add_user username password

username替换为您想要设置的用户名,password替换为相应的密码。此命令将在RabbitMQ实例中创建一个新的用户。

设置用户权限

设置用户权限允许您控制用户对RabbitMQ资源的访问。以下是如何设置用户权限的命令:

docker exec rabbitmq rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

在这个命令中,-p /指定了虚拟主机(默认为/),username是您要设置权限的用户名。三个".*"分别代表对资源(queues、exchanges、bindings)的配置、写入和读取权限。您可以根据需要调整这些权限。

通过以上步骤,您可以在RabbitMQ中管理用户和权限,确保消息队列的安全性和合规性。

7. 数据持久化

7.1 挂载数据卷

数据持久化是确保RabbitMQ在容器重启或删除后数据不丢失的关键。Docker提供了卷(volume)功能来实现数据的持久化。通过将容器中的关键数据目录挂载到宿主机上,可以实现数据的持久存储和备份。

  • 挂载数据卷的必要性:RabbitMQ的数据存储在容器的/var/lib/rabbitmq目录中,如果不进行挂载,容器的删除或重启将导致数据丢失。为了避免这种情况,需要将宿主机的目录挂载到容器的这个目录上。

  • 创建挂载目录:在宿主机上创建一个专用于RabbitMQ的目录,并确保Docker进程有权访问。例如,在Linux系统上,可以创建一个目录/usr/local/docker/rabbitmq,并设置适当的权限:sudo mkdir -p /usr/local/docker/rabbitmq && sudo chmod 777 /usr/local/docker/rabbitmq

  • 挂载数据卷的命令:在启动RabbitMQ容器时,使用-v标志将宿主机的目录挂载到容器的/var/lib/rabbitmq目录。例如,docker run -d --name rabbitmq-instance -v /usr/local/docker/rabbitmq:/var/lib/rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management。这条命令将启动一个名为rabbitmq-instance的容器,并将宿主机的/usr/local/docker/rabbitmq目录挂载到容器的/var/lib/rabbitmq目录。

  • 数据卷的优势:使用数据卷有多个优势。首先,即使容器被删除,数据也不会丢失,因为数据存储在宿主机的目录中。其次,数据卷可以在不同的容器间共享,这意味着可以从备份中快速恢复数据。最后,数据卷的备份和恢复操作更简单,因为只需操作宿主机上的目录。

  • 数据备份与恢复:为了进一步保护数据,应定期备份挂载的数据卷。可以使用docker exec命令在容器内部创建备份,例如:docker exec rabbitmq-instance tar czf /backup/rabbitmq_backup.tar.gz /var/lib/rabbitmq。恢复数据时,将备份文件复制到宿主机的挂载目录中,并解压缩:tar xzf /backup/rabbitmq_backup.tar.gz -C /usr/local/docker/rabbitmq

  • 性能和可靠性:挂载的数据卷性能和可靠性取决于宿主机的文件系统和硬件。为了提高性能,可以考虑使用SSD存储和配置文件系统的最佳实践。为了提高可靠性,可以设置定期备份并测试恢复流程,确保在出现故障时能够快速恢复服务。

通过以上步骤,可以实现RabbitMQ在Docker容器中的数据持久化,确保服务的高可用性和数据的安全性。

8. 备份与恢复

8.1 备份数据命令

在Docker中备份RabbitMQ的数据是确保数据安全性和可恢复性的重要步骤。备份操作可以通过Docker命令行工具执行,具体命令如下:

  • 备份命令:使用docker exec命令结合tar工具来打包RabbitMQ的数据目录。命令如下:

    docker exec rabbitmq-instance tar czf /backup/rabbitmq_backup.tar.gz /var/lib/rabbitmq
    

    此命令在名为rabbitmq-instance的容器内执行,将/var/lib/rabbitmq目录下的所有数据打包成一个名为rabbitmq_backup.tar.gz的压缩文件,并存储在容器的/backup目录中。

  • 备份频率:为了确保数据的完整性和一致性,建议定期执行备份操作。具体的备份频率可以根据业务需求和数据变化的频率来确定,例如每天或每周进行一次备份。

  • 备份存储:备份文件可以存储在容器内部、宿主机的某个目录,或者云端对象存储服务中。选择存储位置时,需要考虑数据的安全性、访问速度和成本。

  • 备份验证:备份完成后,建议定期验证备份文件的完整性和可用性。可以通过解压缩备份文件并检查其内容是否完整来完成验证。

8.2 恢复数据命令

在需要恢复RabbitMQ的数据时,可以使用以下命令将备份文件恢复到容器中:

  • 恢复命令:使用docker exec命令结合tar工具来解压缩备份文件。命令如下:

    docker exec rabbitmq-instance tar xzf /backup/rabbitmq_backup.tar.gz -C /
    

    此命令在名为rabbitmq-instance的容器内执行,将/backup目录下的rabbitmq_backup.tar.gz备份文件解压缩到容器的根目录下。

  • 恢复前的准备:在执行恢复操作之前,需要确保RabbitMQ容器已经停止,以避免数据一致性问题。可以使用docker stop rabbitmq-instance命令来停止容器。

  • 恢复操作:恢复操作需要谨慎执行,确保备份文件的版本与当前RabbitMQ版本兼容。如果备份文件是在不同版本的RabbitMQ上创建的,可能需要额外的步骤来迁移数据。

  • 验证恢复:恢复完成后,启动RabbitMQ容器并验证数据是否正确恢复。可以使用RabbitMQ管理界面或rabbitmqctl命令行工具来检查队列、交换器和绑定等是否与备份前一致。

  • 恢复策略:在生产环境中,建议制定详细的恢复策略和流程。这包括恢复操作的步骤、责任人、通讯机制和应急响应计划,以确保在数据丢失或损坏时能够快速恢复服务。

9. 最后

感谢大家,请大家多多支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2256776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下网卡实现NAT转发

目标 在嵌入式Linux设备下&#xff0c;使用单一的网卡&#xff08;前提支持STA&#xff0b;AP共存&#xff09;&#xff0c;使用NAT&#xff08;网络地址转换&#xff09;实现软路由&#xff0c;以自身为热点&#xff0c;将接收到的流量数据全部转发出去。 一&#xff0c;STA…

笔记04--零基础创建个人本地大模型知识库ollama+Dify

ollma安装 官网下载直接下一步下一步即可&#xff0c;没有魔法的朋友可以留言&#xff0c;文章中所用到的文件也给打包了&#xff0c;大家可以直接下载使用通过云盘下载使用。 链接: https://pan.baidu.com/s/12zF9MpQtg1bnMDAQayaSyg 提取码: n9rm 官网地址&#xff1a;http…

Python爬虫:爬取动漫网站的排行榜数据并进行可视化分析

简单介绍 由于哔哩哔哩的网站现在不太方便爬取&#xff0c;我们选择 agefans.com 这个网站完成项目。 我们会爬取排行榜上的数据&#xff0c;并借助可视化手段绘柱状图展示出来。 导入Python库&#xff08;前提&#xff1a;已经安装了所需的库&#xff09; import pandas impo…

MyBatis快速入门(下)

MyBatis快速入门&#xff08;下&#xff09; 六、MyBatis-缓存机制1、一级缓存&#xff08;Local Cache&#xff09;2、二级缓存&#xff08;Global Cache&#xff09;二级缓存标签属性介绍缓存相关设置 3、第三方缓存Mybatis整合ehcache示例 七、MyBatis-逆向工程1、targetRun…

华为TaurusDB与GaussDB:信创改造的“降本提效”之路

近年来&#xff0c;信创&#xff08;信息技术应用创新&#xff09;已成为中国国央企数字化转型的关键词。伴随这一浪潮&#xff0c;众多企业面临一个迫切问题&#xff1a;如何在兼顾性能与成本的前提下&#xff0c;完成核心系统的迁移改造&#xff1f;华为TaurusDB和GaussDB的加…

【Linux】文本处理三剑客:grep、sed 和 awk

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

【前端】理解 JavaScript 对象属性访问的复杂性

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;理论基础&#xff1a;JavaScript 对象属性的访问模式1. 点符号访问&#xff08;Dot Notation&#xff09;2. 方括号访问&#xff08;Bracket Notation&#xff09;点符号…

【工具变量】上市公司企业研发不确定性数据(2013-2023年)

一、测算方式&#xff1a;参考顶刊《中国工业经济》孙薇&#xff08;2023&#xff09;老师的做法&#xff0c;本文从专利的申请与授权的视角出发&#xff0c;以企业当年申请的发明专利中最终未被授权的比例度量研发不确定性 &#xff08;uc&#xff09;。这是因为&#xff0c;相…

easyExcel单一下拉框和级联下拉框

文章目录&#xff1a; 单一下拉框级联下拉框 具体实现&#xff1a; 单一下拉框 public class BoolWriteHandler implements SheetWriteHandler {private List<String> dropDown;private List<Integer> indexList;public BoolWriteHandler(List<Integer> i…

【C++】指针与智慧的邂逅:C++内存管理的诗意

文章目录 RAII 智能指针auto_ptrunique_ptr shared_ptr模拟实现定制删除器循环引用 和 weak_ptr RAII RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种广泛应用于 C 等编程语言中的编程范式&#xff0c;它的核心思想是&#xff1a;资源的获取和释放…

【优选算法 位运算】位运算算法入门详解:常见位运算总结

判定字符是否唯一 题目解析 算法原理 解法一 &#xff1a;哈希数组 从前往后扫描字符串&#xff0c;把扫描到的字符先进行判断&#xff0c;如果对应的 val 0 &#xff0c;则放入哈希表中&#xff0c;否则返回 false&#xff0c;知道扫描完整个字符&#xff1b;时间…

深入理解Linux进程管理机制

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言 进程是现代操作系统中一个不可或缺的概念&#xff0c;其主要目的在于管理资源、实现并发、提高系统效率&#xff0c;并确保系统的稳定性和安全性。 进程的定义 进程&#xff08;Process&#xff09; 是计算机操作系统中…

R 语言科研绘图第 4 期 --- 折线图-置信区间

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

springSecurity自定义登陆接口和JWT认证过滤器

下面我会根据该流程图去自定义接口&#xff1a; 我们需要做的任务有&#xff1a; 登陆&#xff1a;1、通过ProviderManager的方法进行认证&#xff0c;生成jwt&#xff1b;2、把用户信息存入redis&#xff1b;3、自定义UserDetailsService实现到数据库查询数据的方法。 校验&a…

使用 LabVIEW 与 PLC 通信的方式

要将 PLC 与 LabVIEW 或其他 NI 产品进行通信&#xff0c;首先需要明确 PLC 支持的通信协议和接口类型。NI 提供了多种方案&#xff0c;包括 OPC 服务器、Modbus、Ethernet/IP 和其他工业通信协议。下面将详细介绍这些方法&#xff0c;并进行比较分析&#xff0c;帮助你选择最适…

软考高级架构-9.4.4-双机热备技术 与 服务器集群技术

一、双机热备 1、特点&#xff1a; 软硬件结合&#xff1a;系统由两台服务器&#xff08;主机和备机&#xff09;、一个共享存储&#xff08;通常为磁盘阵列柜&#xff09;、以及双机热备软件&#xff08;提供心跳检测、故障转移和资源管理功能的核心软件&#xff09;组成。 …

专题二十五_动态规划_两个数组的 dp (含字符串数组)_算法专题详细总结

目录 动态规划_两个数组的 dp &#xff08;含字符串数组&#xff09; 1. 最⻓公共⼦序列&#xff08;medium&#xff09; 解析&#xff1a; 1. 状态表⽰&#xff1a; 2. 状态转移⽅程&#xff1a; 3. 初始化&#xff1a;​编辑 4. 填表顺序&#xff1a;​编辑 5. 返回值…

12,攻防世界simple_php

simple_php 题目来源:Cyberpeace-n3k0 题目描述: 小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 进入靶场 这段PHP代码是一个简单的web应用示例&#xff0c;让我们逐步分析这段代码&#xff1a; show_source(__FILE__);&#xff1a;这行代码会显示当前文件的…

NIO - selector简单介绍

一 前言 selector作为NIO当中三大组件之一&#xff0c;是处理NIO非阻塞模式下的核心组件&#xff0c;它允许一个单个线程管理多个通道。 NIO下的阻塞模式 因为对于阻塞模式下的NIO模式&#xff0c;存在很大的问题&#xff0c;即使在单线程下&#xff0c;对应的服务端也会一直进…

二、部署docker

二、安装与部署 2.1 安装环境概述 Docker划分为CE和EE&#xff0c;CE为社区版&#xff08;免费&#xff0c;支持周期三个月&#xff09;&#xff0c;EE为企业版&#xff08;强调安全&#xff0c;付费使用&#xff09;。 Docker CE每月发布一个Edge版本&#xff08;17.03&…