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

news/2024/4/29 2:22:07/文章来源:https://blog.csdn.net/ProGram_BlackCat/article/details/128931616

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

本章内容

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

在开始本章内容之前,我解答一个问题,有小伙伴问我说,有的容器DockerHub官网并没有提供任何可参考的文档,那怎么启动对应的容器呢?

我们一般启动容器首先想到的就是通过DockerHub官网提供的示例文档来进行对各自目录的挂载配置等等,如图。
当然,也会存在没有详细说明的容器,比如昨天的Gitlab容器,像这种我们其实可以通过容器本身的官网进行相应的查询,如图。
会存在都没有说明文档的容器吗?会,肯定会,像这种容器如何进行对应的目录的挂载就需要对容器镜像技术有一定的了解了,最差也需要对Dockerfile有一定的理解,拿本章即将安装的容器Mysql来说,我们也可以通过其Dockerfile的内容进行对应目录的挂载,如图。
到此,算是解答了如上的问题,实际工作中技术类内容大部分都是如此去寻找文档。


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

mkdir -p /install_ls/mysql /install_ls/mongoDB /install_ls/redis /install_ls/rabbitMQ /install_ls/elasticSearch


Docker安装并运行Mysql

Mysql就不用我过多介绍了吧,家喻户晓的产品,Docker安装Mysql需要格外注意各自版本的挂载配置文件路径不同,很多小伙伴无视Mysql的版本,安装版本8挂载7的目录,安装版本7挂载8的目录,这样就会导致Mysql挂载配置文件失效,从而造成配置无效的情况,本文内容以Mysql8为主进行演示。

  1. 根据说明,创建对应挂载目录,执行命令mkdir -p /install_ls/mysql/data /install_ls/mysql/config/conf.d
    在这里插入图片描述

  2. 根据说明,了解对应环境变量,像Mysql我们需要设置root的密码,通过环境变量MYSQL_ROOT_PASSWORD来设置,可以看到官网说明也写明了是必须设置的环境变量,如图。

  3. 复制容器内配置文件到挂载文件目录下,新增Mysql初始化配置,不执行该操作则在挂载配置目录下无法获取到该容器的配置文件。

    执行命令touch my.cnf,在该文件添加如下内容,保存并退出。

    	# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; version 2 of the License.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA#
    # The MySQL  Server configuration file.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html[mysqld]pid-file    = /var/run/mysqld/mysqld.pid
    socket        = /var/run/mysqld/mysqld.sock
    datadir        = /var/lib/mysql
    symbolic-links=0
    max_connections = 2000
    max_user_connections = 1900
    max_connect_errors = 100000
    max_allowed_packet = 50M
    lower_case_table_names=1
    skip-name-resolve
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    
  4. 执行创建并启动,命令如下。

    docker run -d \
    -p 3306:3306 \
    -v /install_ls/mysql/data:/var/lib/mysql \
    -v /install_ls/mysql/config/conf.d/my.cnf:/etc/mysql/my.cnf \
    -e MYSQL_ROOT_PASSWORD=rooT123 \
    --name mysql8 \
    mysql:8.0.0
    

  5. 通过Navicat连接刚刚部署的Mysql容器,然后我们查看一下我们的配置是否生效,通过``,可以看到我们设置的最大连接数已经生效,到这里mysql容器的部署完成。

※ 生产环境安装mysql容器注意的点特别多,这是因为数据是无价的,因此我们部署mysql容器尤其需要对挂载目录进行不定期的冷备(热备更好啦 ~)并且实际业务逐渐上升以后还需要对mysql容器要使用到的的资源进行再分配,比如内存大小、运存大小、可分配cpu大小等;最后注意的是安全方面,mysql容器的登录密码要设置复杂,另外还需要对默认端口进行非默认分配(比如mysql默认是3306那就不要映射3306redis默认是6379那就不要用6379),切记不可偷懒学我文中设置的端口和密码。


Docker安装并运行MongoDB

MongoDB是一款文档型非关系型数据库,老实讲这东西非常容易被攻击,且MongoDB身份验证体系非常复杂,悄悄说一句:“上家公司某某司法调解系统就纯MongoDB一天内做完(狗头)”,文档型还是有其优势的,废话不多说,上示例。

  1. 首先我们通过访问DockerHub官网查找到MongoDB详细文档,确认需要挂载的目录与配置等,如图。

    执行命令创建对应该挂载目录,mkdir /install_ls/mongoDB/data

  2. 通过文档我们可以看到Mongo类似我们Mysql容器一样,也可以设置账号密码,但是Mongo并不需要强制设置账号密码,当然为了拥有安全的生产环境,账号密码一定是需要设置的(你看并不是我一个人吐槽Mongo的验证用户体系复杂)。

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

    docker run -d \
    -p 27021:27017 \
    -v /install_ls/mongoDB/data:/data/db \
    -e MONGO_INITDB_ROOT_USERNAME=laocat \
    -e MONGO_INITDB_ROOT_PASSWORD=laocat \
    --name mongo6 \
    mongo:6.0
    


  4. 通过Navicat进行访问,可以看到通过映射的IP+端口与账号密码成功连接我们刚刚的mongo容器。

※ 同理,挂载目录需要格外注意备份,另因其Mongo用户验证体系的复杂,生产使用,一定要进行相应的了解,密码越复杂越好。


Docker安装并运行Redis

作为缓存界大名鼎鼎的Redis,在其不断的版本更新下,逐步向着事务、多线程下靠近,以其读取速度极快的优势, 成为了互联网公司业务开发必不可少的组件之一,这里我们Redis容器版本以7.0为主进行演示。

  1. 首先我们通过DockerHub官网,去了解其配置文件与挂载目录,通过了解我们需要对数据目录与配置文件进行挂载,执行命令新建该挂载目录,mkdir -p /install_ls/redis/data /install_ls/redis/conf
    在这里插入图片描述
    然后在conf目录下创建Redis配置文件redis.conftouch redis.conf,填入如下配置。

    #bind 127.0.0.1
    protected-mode no
    #表示开始持久化
    appendonly yes
    #表示密码
    requirepass 自行填写密码
    

  2. 一切准备好后,我们执行命令创建并启动Redis容器。

    docker run -d \
    -p 6377:6379 \
    -v /install_ls/redis/data:/data \
    -v /install_ls/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
    --name redis7 \
    redis:7.0 \
    redis-server /usr/local/etc/redis/redis.conf
    


  3. 我们通过RDM(Redis GUI 管理工具),连接我们刚刚部署的Redis容器,可以看到连接成功。

※ 对于Redis容器,需要注意合理分配内存空间,当然也需要对挂载目录进行备份,最后需要注意的是不要像我文中一样设置一个特别简单的密码。


写在后边

系列文章读到这里,一定有细心的小伙伴已经总结出如何创建和启动一个容器的规律了,首先通过各种途径找到需要对应挂载的数据目录并在宿主机创建对应目录,有需要配置文件的在宿主机对应挂载配置目录下新增配置文件,像存储数据一类的容器,都会有账号密码的环境变量,容器需要映射宿主机端口,可以通过其Dockerfile来获取,掌握这几点规律,其实大部分的容器已经难不倒你了,小伙伴们可以提前尝试通过我上述的步骤,去提前尝试部署一下下一节内容中的容器RabbitMQElasticSearch


☆ 参考文献:

◎ 文中所用到的资源链接:
【Docker Hub Mysql】
https://hub.docker.com/_/mysql
【Docker Hub MongoDB】
https://hub.docker.com/_/mongo
【Docker Hub Redis】
https://hub.docker.com/_/redis

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试标准流程

软件测试的基本流程大概要经历四个阶段,分别是制定测试计划、测试需求分析、测试用例设计与编写以及测试用例评审。因此软件测试的工作内容,远远没有许多人想象的只是找出bug那么简单。准确的说,从一个项目立项以后,软件测试从业者…

【项目精选】基于Java的敬老院管理系统的设计和实现

本系统主要是针对敬老院工作人员即管理员和员工设计的。敬老院管理系统 将IT技术为养老院提供一个接口便于管理信息,存储老人个人信息和其他信息,查找 和更新信息的养老院档案,节省了员工的劳动时间,大大降低了成本。 其主要功能包括: 系统管理员用户功能介绍&#…

面临激烈竞争的汽车之家仍有新的增长机会

来源:猛兽财经 作者:猛兽财经 竞争激烈是汽车之家面临的主要问题 在汽车之家(ATHM)2021财年的20-F文件中,汽车之家将自己描述为中国最大的“汽车服务平台”运营商,但行业数据却显示,汽车之家的…

Python 如何快速搭建环境?

Python可应用于多平台包括 Linux 和 Mac OS X。 你可以通过终端窗口输入 “python” 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (多个…

10条终身受益的Salesforce职业发展建议!

Salesforce这个千亿美金巨兽,在全球范围内有42,000多名员工。作为一家发展迅速的科技公司,一直在招聘各种角色,包括销售、营销、工程师和管理人员等。 据IDC估计,从2016年到2020年,该生态系统创造了190万个工作岗位。…

训练营day16

104.二叉树的最大深度 559.n叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数104.二叉树的最大深度 力扣题目链接 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示…

Java基础-网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…

Vue中路由缓存及activated与deactivated的详解

目录前言一,路由缓存1.1 引子1.2 路由缓存的方法1.2.1 keep-alive1.2.2 keep-alive标签中的include属性1.2.3 include中多组件的配置二,activated与deactivated2.1 引子2.2 介绍activated与deactivated2.3 解决需求三,整体代码总结前言 在Vu…

【深度学习基础8】卷积神经网络 经典网络

一、卷积操作 1. 基本原理 相信大家对卷积操作并不陌生,先来回顾一下卷积的工作原理(2-D):👇 卷积的目的是进行特征提取,不同的卷积核可以提取到不同的特征,比如下面的三个卷积核的功能分别是:模糊化、锐化、边缘化👇 卷积的本质就是滤波器, 将滤波器沿着图像…

【JavaScript】面向对象和构造函数详解

💻 【JavaScript】面向对象和构造函数详解 🏠专栏:JavaScript 👀个人主页:繁星学编程🍁 🧑个人简介:一个不断提高自我的平凡人🚀 🔊分享方向:目前…

加拿大访问学者家属如何办理探亲签证?

由于大多数访问学者的访学期限都为一年,家人来访不仅可以缓解访学的寂寞生活,而且也是家人到加拿大体验国外风情的好机会。家属在国内申请赴加签证时,如果材料齐全,一般上午递交了申请,下午就可以拿到签证。以下是家人…

基于merlin使用chatGPT进行对话

最近chatGPT很热,大家都想试用它。但由于各种限制,一般情况下国内不能试用。 下面给大家介绍基于merlin使用chatGPT(目前每天只有11次问答次数)。 1 打开merlin页面 访问地址merlin.foyer.work,点击“add to chrome”…

流程控制之循环

文章目录五、流程控制之循环5.1 步进循环语句for5.1.1 带列表的for循环语句5.1.2 不带列表的for循环语句5.1.3 类C风格的for循环语句5.2 while循环语句5.2.1 while循环读取文件5.2.2 while循环语句示例5.3 until循环语句5.4 select循环语句5.5 嵌套循环5.4 利用break和continue…

Elasticsearch安装IK分词器、配置自定义分词词库

一、分词简介 在Elasticsearch中,假设搜索条件是“华为手机平板电脑”,要求是只要满足了其中任意一个词语组合的数据都要查询出来。借助 Elasticseach 的文本分析功能可以轻松将搜索条件进行分词处理,再结合倒排索引实现快速检索。Elasticse…

crawler爬虫抓取数据

crawler爬虫实现 学习目标: 了解 crawler爬虫运行流程了解 crawler爬虫模块实现 1. crawler功能 初始化driver输入公司名称,并点击判断是否需要验证如果需要验证,获取验证图片并保存获取打码坐标点击验证图片判断查询结果选择第一条查询结果获取主要信…

Vue2仿网易云风格音乐播放器(附源码)

Vue2仿网易云风格音乐播放器1、整体效果2、使用技术3、实现内容4、源码5、使用图片1、整体效果 2、使用技术 使用了HTML5 CSS3进行页面布局及美化使用Vue2进行数据渲染与页面交互使用Axios发送http请求获取数据 3、实现内容 实现了搜索歌曲功能,输入歌手或歌曲关…

2023年做跨境电商的4个小忠告

2023年做跨境电商的小伙伴日益增加,但不管是对于新手还是老人,都是一个极具挑战的事情,因为做好跨境电商不是一件容易的事情,需要花费不少时间与精力。这里我们小编就给大家几个小忠告,希望对大家有用。2023年做跨境电…

私募证券基金动态-23年1月报

成交量:1月日均7,901.31亿元2023年1月A股两市日均成交7,901.31亿元,环比上升0.33%、同比下降25.18%。1月恰逢春节仅16个交易日,节后2个交易日交易量明显回暖。管理人:新提交备案51家,备案通过21家1月新提交备案申请的5…

侯捷C++系统工程师

前言我相信对于每一个学习C的同学和从业者来说,台湾著名学者侯捷老师的C系列都是不可错过的好视频。侯捷老师在网上已有五门课,分别是:C面向对象开发、STL标准库与泛型编程、C新标准C1&14、C内存管理机制以及C Startup揭秘讲师介绍侯捷老…

当下最流行的 ChatGPT :前世今生

GPT 不是凭空而出,它是经过了很多人的努力,以及很长一段时间的演化得来的。因此,梳理一下 GPT 的庞大 “家族” 还是很有必要的,看看他继承了什么,学习了什么,又改进了什么,这样也能更好地理解 …