LaoCat带你认识容器与镜像(实践篇二下)

news2024/11/16 15:42:14

实践篇主要以各容器的挂载和附加命令为主。

本章内容

本文实操全部基于Ubuntu 20.04
宿主机 => linux服务器本身
Docker => 20.10.22

接上章内容,接下来该章围绕Docker安装并运行之RabbitMQElasticSearch,大部分命令来源于DockerHub官网,我们将本章分为上下俩节,为演示方便这里我们跟前一节一样新建挂载目录/install_ls,并对对应的软件本身建立目录,新建过可以无视。

mkdir -p  /install_ls/rabbitMQ /install_ls/elasticSearch


Docker安装并运行RabbitMQ

一提到消息队列,最先想到的就是其最大的优势解耦,在分布式场景下多用于分布式系统之间通信,消息队列应用有很多,比如RocketMQkafka等,我们这里演示使用RabbitMQ,同理我们先到DockerHub找寻其说明文档,并创建对应挂载目录,像RabbitMQ需要安装web端页面可访问插件。

  1. 根据DockerHub RabbitMq说明文档创建其挂载目录,执行命令mkdir /install_ls/rabbitMQ/data

  2. 通过文档我们可以了解到RabbitMQ,可以通过环境变量RABBITMQ_DEFAULT_USERRABBITMQ_DEFAULT_PASS指定账号与密码,当然也可以不指定默认为guest / guest

  3. 创建并启动RabbitMQ容器,执行命令。

    docker run -d \
    -p 15673:15672 \
    -p 5673:5673 \
    -v /install_ls/rabbitMQ/data:/var/lib/rabbitmq \
    -e RABBITMQ_DEFAULT_USER=laocat \
    -e RABBITMQ_DEFAULT_PASS=laocat \
    --name rabbit-m-3.9 \
    rabbitmq:3.9-management
    


    我们这里使用了RabbitMQ插件版本,无需进入容器内部去开启插件,当然小伙伴们也可以使用非插件版本,官网也对此进行了说明。

    这里可以看到我们的容器已经正常启动了。

  4. 通过IP加端口我们访问该容器,输入我们配置的账号和密码,可以看到RabbitMQ容器正常启动并运行。

RabbitMQ容器除了需要备份挂载目录外,还需要注意其内存的分配是否合理,当然也少不了安全方面账号与密码的复杂等级。


Docker安装并运行ElasticSearch

ElasticSearch我想我不用过多介绍,一个分布式、高扩展、高实时的搜索与数据分析引擎;说来话长,16年当时的公司项目就用到了ElasticSearch,用ElasticSearch来进行商品的搜索,当时国内并没有与之相关的任何博客、文档;不用说也清楚攻克其有着不小的困难,我硬着头皮苦笑着接下活来,作为一个还没有现在实力水平3/1的我,在接下来的一周内没日没夜的查阅各种国外资料,服务器上部署一了一次又一次,最终在一个星期后的周一晚上10点30分左右,我看着项目的控制台输出了我调用其API后的正确结果,兴奋的叫出声来 ~,后来便抓紧时间的补了博文,哈哈哈 ~,现在看看当时的博文,是真的不会表达啊 ~(虽然现在也不咋地,狗头 ~)。

言归正传,今天我们部署的版本是8.6.0,单机版 ~,当时我写博文的版本还是2.4.0,通过DockerHub官网我们可以看到其文档中说明需要新建Docker network,我们这里并不会对所有的容器进行网络分组,也不会部署其相应产品logstashKibana,所以并不需要创建网络,后续章节会专门进行这块的延伸;

  1. 通过官网与ElasticSearch 官方Dockerfile我们可以看到其工作目录为/usr/share/elasticsearch,但官方并没有挂载数据目录,所以我们这里不需要新建任何数据挂载目录,前边新建的挂载目录也可以删掉,哈哈 ~ 实时写博文,我也没想到它没有挂载目录。

  2. ElasticSearch基于java,故需要我们设置堆的大小,同时还需要设置其为单机模式启动,可以通过官网找到对应环境变量,ES_JAVA_OPTS可以设置堆的大小,discovery.type可以设置其启动模式。

  3. 创建并启动ElasticSearch容器。

    docker run -d \
    -p 9200:9200 \
    -p 9300:9300 \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    --name es8.6 \
    elasticsearch:8.6.0
    
  4. 访问ElasticSearch容器可以通过curl ip+port来验证是否启动运行正常,也可以通过安装插件来访问(ElasticSearch-Head)这里就不展开插件方式了,还可以通过网上的GUI插件来进行验证,当然最简单的是通过浏览器访问容器的ip+port来验证,我这里发现访问不到该实例,突然就想起了18年再写ES时考究到新的版本不再支持远程访问,我们执行命令docker exec -it es8.6 /bin/bash进入容器内部,看看到底是不是因为这个原因,查看配置文件,发现并不是这样,突然我看到了配置文件跟原来版本的不同,多了security模块,查看其官方博客发现,8.0es提供了一个简单的安全功能,原来如此。

  5. 我们将http访问改为https,会发现需要账号密码登录,我们通过官方博客查询后,得到该账号密码就在初始化启动时的日志里,我们停止删除该容器,修改创建并启动容器的命令,为其启动时提供一个可交互的终端。

    docker run -d \
    -p 9200:9200 \
    -p 9300:9300 \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    --name es8.6 \
    -it elasticsearch:8.6.0
    
  6. 执行docker exec -it es8.6 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic 将会重新生成elastic账户的密码。

  7. 通过https访问,输入第6环节账号密码,请求成功,es启动完成!!!

es版本的不同导致容器的启动也会有所不同这点需要格外注意,避免踩坑~,对于es生产环境部署,建议集群化部署,而非单机部署,另外要注意修改linux一些配置参数,以适配es,本文就忽略不计了。


☆ 参考文献:
【Elastic Stack 8.0 安装】
https://elasticstack.blog.csdn.net/article/details/122874932
【Install Elasticsearch with Docker】
https://www.elastic.co/guide/en/elasticsearch/reference/8.6/docker.html \

◎ 文中所用到的资源链接:
【Docker Hub RabbitMQ】
https://hub.docker.com/_/rabbitmq
【Docker Hub ElasticSearch】
https://hub.docker.com/_/elasticsearch
【ElasticSearch 官方 Dockerfile】
https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
【ElasticSearch 多节点部署步骤】
https://www.elastic.co/guide/en/elasticsearch/reference/8.6/docker.html#docker-cli-run-dev-mode

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

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

相关文章

Apache日志分析器

您的Apache HTTP服务器生成的日志数据是信息的宝库。使用这些信息,您可以判断您服务器的使用情况、找出漏洞所在,并设法改进服务器结构和整体性能。审核您的Apache日志可在以下情况派上用场,其中包括:识别和纠正频繁出现的错误以增…

github相关

1.本地项目上传到远程github 1.1github上创建项目 1)github上创建项目 2)复制地址 1.2上传自己的项目 1)本地项目目录下执行 git init “git init”命令用于创建git仓库,其可以在一个已有的非git项目的根目录下执行,把已有项目初始化成为git仓库&…

微服务实战--高级篇:多级缓存:Nginx本地缓存、Redis、Tomcat、JVM缓存、数据库

多级缓存 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时…

模型部署综述

https://github.com/leeguandong/KuaiZaihttps://github.com/leeguandong/KuaiZaiAI 框架部署方案之模型部署概述 - 知乎文小P 家的 1011010 概述模型训练重点关注的是如何通过训练策略来得到一个性能更好的模型,其过程似乎包含着各种“玄学”,被戏称为“…

全局异常处理--Java实战项目篇

系列文章目录 Java后端开发功能模块思路 Spring Boot自动配置–如何切换内置Web服务器 Spring Boot读取配置文件内容的三种方式 该系列文章持续更新,更多的文章请点击我的主页查看哦! 文章目录系列文章目录前言一、出现的问题二、解决问题的方法1. 添加…

iPhone更新iOS 16.3出现应用卡死、闪退的问题怎么办?

在升级最新的 iOS 16.3 系统后,有些用户可能遇到了个别应用无法正常打开,卡死的异常情况。大家可以尝试通过如下方式解决问题。 1.重新启动应用: 如果应用出现卡死或闪退,可从 iPhone 屏幕由底往上滑(或连续按两次 H…

Java变量和数据类型,超详细整理,适合新手入门

目录 一、什么是变量? 二、变量 变量值互换 三、基本数据类型 1、八种基本数据类型 2、布尔值 3、字符串 四、从控制台输入 一、什么是变量? 变量是一种存储值的容器,它可以在程序的不同部分之间共享;变量可以存储数字、字…

C语言进阶——通讯录模拟实现

🌇个人主页:_麦麦_ 📚今日名言:只有走在路上,才能摆脱局限,摆脱执着,让所有的选择,探寻,猜测,想象都生机勃勃。——余秋雨《文化苦旅》 目录 一、前言 二、正…

让我百思不得其解的infer究竟是怎么推导类型的?

情景再现 有这么一个条件类型的基本语法: T extends U ? X : Y; 如果占位符类型U是一个可以被分解成几个部分的类型,譬如数组类型,元组类型,函数类型,字符串字面量类型等。这时候就可以通过infer来获取U类型中某个部分的类型。 …

95后外贸SOHO,年入7位数,他究竟是怎么做的?

外贸SOHO,一年到底能挣多少钱?有人说:“勤勤恳恳,年薪也就十来万吧”;也有人说:“100万而已我早就已经挣到了”;还有人说:“谁说新手难出头?我做跨境半年赚200万&#xf…

Linux设备驱动移植

目录 一、设备树 1.1设备树 1.2设备树文件 1.3设备树语法 1.4Linux内核驱动移植 二、网卡驱动 2.1在make menuconfig界面中选中要安装的驱动 2.2在设备树中添加/修改相应的设备信息 2.3修改时钟 2.4修改eMMc 2.5编译测试 一、设备树 1.1设备树 设备树是一种描述硬…

MATLAB 粒子群算法

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

Cy5 Alkyne,1223357-57-0,花青素Cyanine5炔基,氰基5炔烃

CAS号:1223357-57-0 | 英文名: Cyanine5 alkyne,Cy5 Alkyne | 中文名:花青素CY5炔基CASNumber:1223357-57-0Molecular formula:C35H42ClN3OMolecular weight:556.19Purity:95%Appear…

全网详解MyBatis-Plus updateById方法更新不了空字符串或null的解决方法

文章目录1. 文章引言2. 分析问题3. 解决问题3.1 方法1:全局配置方式3.2 方法2:非null字段验证策略3.3 方法3:通过注解的方式4. 总结1. 文章引言 在开发的过程中,我们经常使用MyBatis-Plus的updateById方法更新数据表,…

ChatGPT学习心得一(使用node+react做了一个案例)

项目地址 http://chat.xutongbao.top 项目截图 使用技术栈 nodeSQLiteredisnginxlog4jsexpressjenkinscdnreactantdreact-scrollbars-customiconfontwebpackpostmanaxiosreduximmutablenpmyarnopenai等等 官网 https://openai.com/blog/chatgpt/ 官方聊天应用 https://ch…

【Linux】多线程编程 - 同步/条件变量/信号量

目录 一.线程同步 1.什么是线程同步 2.为什么需要线程同步 3.如何实现线程同步 二.条件变量 1.常见接口以及使用 2.wiat/signal中的第二个参数mutex的意义 3.代码验证 三.POSIX信号量 1.概念 2.常见接口以及使用 四.条件变量vsPOSIX信号量 一.线程同步 1.什么是线…

公链“私”用

发表时间:2022年3月17日 信息来源:bsvblockchain.org 虽然区块链行业已经诞生了十多年,但直到最近几年这个行业才开始走向专业化并日趋成熟,现在它已成为了一种可为企业实用范例提供合法解决方案的技术。 早年间,与这…

基于ubuntu20.4的wine的MDK5软件的安装

本文基于ubuntu20.4安装MDK5的keil软件,由于MDK不提供linux版本的安装软件,因此需要利用wine软件来安装MDK5软件,具体流程包括wine软件安装、MDK5安装及MDK5的lic添加等3部分内容。具体流程如下所示: (一)…

typescript 路径别名问题(别名设置 开发与打包时路径问题)

在使用TS开发时,一般我们会在tsconfig 中设置别名来让代码变得优雅一点。 将 import xx from …/…/…/service/改为import xx form ‘service/’ tsconfig 别名设置 此时项目结构如下 一般我们可以通过baseUrl 和path两个字段来设置对应的别名 {"include…

爬虫:栖落的电影网站,利用requests和re模块

这是栖落的电影网站地址:https://xxx.xxx 进入网页,显示: 爬取目标:电影的名称、观影人数和评分。 易知本网站的url url "https://xxx.xxx" 本网站会识别出headers中的python请求而拒绝访问,所以需要更改…