laocat带你认识容器与镜像(实践篇二下)(代码片段)

LaoCat__ LaoCat__     2023-03-03     290

关键词:

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

系列目录
LaoCat带你认识容器与镜像(一)
LaoCat带你认识容器与镜像(二【一章】)
LaoCat带你认识容器与镜像(二【二章】)
LaoCat带你认识容器与镜像(二【三章】)
LaoCat带你认识容器与镜像(三【上】)
LaoCat带你认识容器与镜像(三【下】)
LaoCat带你认识容器与镜像(四【上】)
LaoCat带你认识容器与镜像(四【下】)
LaoCat带你认识容器与镜像(番外一【Harbor】)
LaoCat带你认识容器与镜像(实践篇一上)
LaoCat带你认识容器与镜像(实践篇一下)
LaoCat带你认识容器与镜像(实践篇二上)
LaoCat带你认识容器与镜像(实践篇二下)

本章内容

本文实操全部基于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

docker容器的原理与实践(下)(代码片段)

...经验。Docker原理分析Docker架构镜像原理镜像是一个只读的容器模板,含有启动docker容器所需的文件系统结构及内容Docker以镜像和在镜像基础上构建的容器为基础,以容器开发、测试、发布的单元将应用相关的所有组件和环境进行... 查看详情

制作容器镜像的最佳实践(代码片段)

...习到的关于镜像制作的相关文章总结出来的.包括通用的容器最佳实践,java,nginx,python容器最佳实践.最佳实践的目的一方面保证镜像是可复用的,提升DevOps效率,另一方面是为了提高安全性.希望对各位有所帮助.本文分为四部分内容,... 查看详情

容器技术dockerk8s50容器镜像服务(acr)详解-使用与实践

参考https://edu.aliyun.com/lesson_2553_27406#_27406 查看详情

1小时带你粗略了解docker容器!注意点赞收藏~(代码片段)

一、容器的简介1.1、什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测... 查看详情

13-docker技术基本应用实践(代码片段)

...ker在线安装DockerDocker入门实践基本操作核心对象分析镜像容器数据卷Docker镜像操作实践下载运行镜像删除镜像文件Docker容器操作实践启动分析查看容器信息停止或重启容器进入指定容器退出容器删除容器Docker数据管理实践概述数... 查看详情

企业运维实践-使用aliyun容器镜像服务对海外gcrquay仓库镜像进行镜像拉取构建

关注「WeiyiGeek」公众号设为「特别关注」每天带你玩转网络安全运维、应用开发、物联网IOT学习!希望各位B友【关注、点赞、评论、收藏、投币】,助力每一个梦想。原文地址:https://blog.weiyigeek.top/2022/6-1-663.html文章目录:0x00前言... 查看详情

带你玩转docker容器技术之镜像

镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。为什么我们要讨论镜像的内部结构?如果只是使用镜像,当然不需要了解,直接通过docker命令下载和运行就可以了。但如果我们想创建自己的镜像,或者... 查看详情

nlp带你认识经典的序列模型-hmm与crf(代码片段)

认识经典的序列模型HMM与CRF1.HMM模型1.1HMM模型的输入和输出1.2HMM模型的作用1.3HMM模型使用过程简述2.CRF模型2.1CRF模型的输入和输出2.2CRF模型的作用2.3CRF模型使用过程简述3.HMM与CRF模型之间差异4.HMM和CRF的发展现状5.总结1.HMM模型1.1HMM... 查看详情

docker基本实践(代码片段)

文章目录docker1是什么2常用命令3镜像3.1获取镜像3.2运行容器3.3列出镜像3.4脚本定制镜像3.4.1dockerfile3.4.2容器启动命令3.5构建镜像docker1是什么Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置... 查看详情

docker基本实践(代码片段)

文章目录docker1是什么2常用命令3镜像3.1获取镜像3.2运行容器3.3列出镜像3.4脚本定制镜像3.4.1dockerfile3.4.2容器启动命令3.5构建镜像docker1是什么Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置... 查看详情

测试环境docker化—容器集群编排实践(代码片段)

...验过程中有台云主机好几次宕机,经常要删掉不用的镜像容器);部分模块之间需要相互调用,为方便部署多套环境简化配置修 查看详情

测试环境docker化—容器集群编排实践(代码片段)

...验过程中有台云主机好几次宕机,经常要删掉不用的镜像容器);部分模块之间需要相互调用,为方便部署多套环境简化配置修 查看详情

容器安全风险and容器逃逸漏洞实践(代码片段)

...公开的镜像仓库,从而造成敏感数据泄露。1.2、Docker容器存在的风险安全漏洞:容器应用代码也会存在SQL注入、XSS等安全漏洞,容器默认情况下连接到由docker0网桥提供的子网中。如果 查看详情

带你了解docker是什么----初始篇

docker容器docker简介docker、虚拟环境与虚拟机docker的核心概念Docker镜像Docker仓库Docker容器镜像、容器、仓库,三者之间的联系容器容器一词的英文是container,其实container还有集装箱的意思,集装箱绝对是商业史上了不起... 查看详情

容器实践线路图(代码片段)

...虑实施容器化。不过真要在自己企业实践容器的时候,会认识到容器化不是一个简单工程,甚至会有一种茫然不知从何入手的感觉。本文总结了通用的企业容器化实施线路图,主要针对企业有存量系统改造为容器,或者部分新开... 查看详情

docker实践:镜像的概念管理(查看下载删除)(代码片段)

...次改变以读写层的形式增加到原来的只读文件上。镜像是容器运行的基石。下图展示的是Docker镜像的系统结构。其中,镜像的最底层必须是一个称为启动文件系统(bootfs)的镜像,用户不会与这一层直接打交道。bootfs的上层... 查看详情

docker的概述与(安装|镜像|容器)(代码片段)

文章目录Docker概述Docker与虚拟机的区别容器为什越来越受欢迎容器与虚拟机的比较Docker核心概念安装Docker服务安装依赖包设置阿里云镜像源安装Docker-CE并设置为开机自动启动Docker镜像操作搜索镜像获取镜像镜像加速下载查看镜像... 查看详情

docker的概述与(安装|镜像|容器)(代码片段)

文章目录Docker概述Docker与虚拟机的区别容器为什越来越受欢迎容器与虚拟机的比较Docker核心概念安装Docker服务安装依赖包设置阿里云镜像源安装Docker-CE并设置为开机自动启动Docker镜像操作搜索镜像获取镜像镜像加速下载查看镜像... 查看详情