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

news2025/6/9 17:54:11

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

本章内容

本文实操全部基于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.coloradmin.cn/o/334214.html

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

相关文章

可信AI年度观察 | 智能语音产业需求不断升级,评测重点由技术转向产品

自《新一代人工智能发展规划》发布以来,人工智能发展已上升为国家战略,在“十四五”规划中,更是将人工智能列为科技前沿领域的“最高优先级”,国家政策支持为人工智能产业发展提供良好环境。同时,各行业逐渐重视改善价…

ChatGPT 支持的搜索引擎 Bing 究竟什么样?

微软于2月8日北京时间凌晨在 Redmond 线下举办一场媒体活动,围绕微软的产品以及 AI,公布最新消息。这里我们先回顾一下微软在 AI 上的布局。 2019年,微软向 OpenAI 投资10亿美元,成为了 OpenAI 紧密的合作伙伴,而微软…

Git学习笔记-详细使用教程

一、定义 Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的。 二、Git与SVN的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时…

分享:提升你工作幸福感的11个工具软件!

今天给大家分享11个非常好用的资源、工具网站。不论你是做运营、设计,还是个人生活中的应用,甚至只是提升你在线冲浪的快乐感,你都值得拥有它们。 1,在线一键抠图 https://www.remove.bg/ 免费的软件,自动抠图&…

【官方 | 计算机二级Python教程】第八章:Python计算生态

【官方 | 计算机二级Python教程】第八章:Python计算生态参考书目第八章:Python计算生态本章知识导图8.1 计算思维8.2 程序设计方法论8.3 计算生态与生态式编程8.4 基本的Python内置函数习题本文代码编译环境及版本更新日志参考书目 拜读的是计算机等级考…

mysql安装指定版本详细教程mysql 8.0.28示例

之前出过一版安装mysql5.7和安装mysql8.x最新版本的文档今天根据需求出一版指定版本的安装教程以8.0.28为例https://dev.mysql.com/downloads/mysql/ 下载mysql的官网下载好后上传到服务器安装时会报错公钥URL错误rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 …

Python中关于@修饰符、yeild关键词、next()函数的基本功能简述

关于修饰符:其实就是将修饰符下面的函数当成参数传给它上面的函数。 def a(x):print(a)adef b():print(b) 其效果等价为: def a(x):print(a)def b():print(b)a(b())有个记忆诀窍,的下面哪个函数最近,谁就是儿子,谁就…

Windows环境下使用MySQL:实现自动定时备份

一、编写备份脚本 1 2 3 4 5 6 7 8 9 rem auther:www.yumi-info.com rem date:20230209 rem ******MySQL backup start******** echo off forfiles /p "E:\mysql\MySQL BackUp" /m backup_*.sql -d -30 /c "cmd /c del /f path" set "Ymd%date:~0,4%…

[SSD固态硬盘技术 7] 固件概述和固件升级

固件英文叫Firmware,就是“固化在硬件中的软件”,不太恰当但是毕竟好理解的就是:固件就是硬盘的操作系统。固件Firmware是安装在硬盘的一个小记忆芯片上的,用于引导硬盘工作。其担任着一个系统最基础最底层的工作。对硬盘固件&…

2023 AIME 答案与解析 - 第一期

这里放广告 原题目 Five men and nine women stand equally spaced around a circle in random order. The probability that every man stands diametrically opposite a woman is where and are relatively prime positive integers. Find 绿树教育中心独家解析 先选取 5 对座…

知道什么是“事件冒泡“和“事件捕获“吗?那该怎么阻止事件冒泡呢

1. 事件冒泡与事件捕获 事件冒泡和事件捕获分别由微软和网景公司提出&#xff0c;这两个概念都是为了解决页面中事件流&#xff08;事件发生顺序&#xff09;的问题。 <div id"outer"><p id"inner">Click me!</p> </div>上面的代码…

【MySQL Shell】8.7 InnoDB ClusterSet 的受控切换

受控切换使选定的副本集群成为 InnoDB ClusterSet 部署的主集群。在受控切换过程中&#xff0c;确保了数据的一致性。该过程验证所选副本集群是否与主集群同步&#xff08;如果存在复制延迟&#xff0c;这可能意味着需要短时间的等待&#xff09;&#xff0c;然后使该集群成为 …

masscan的常用命令记录

目录 masscan介绍 常见参数 常见命令 输出格式 案例测试 masscan介绍 默认情况下&#xff0c;masscan的发包速率是100每秒&#xff0c;可以通过 ‘–rate’ 命令设置发包速率。 常见参数 --top-port 100&#xff1a;扫描100个常⻅端⼝ --adapter-ip&#xff1a;指定发包…

fwknop的安装和使用测试

SAP名为单包授权&#xff0c;是一种认证方法&#xff0c;它是一种端口敲门的方法&#xff0c;是之前早起端口敲门的升级版本。目的是为了隐藏服务端口&#xff0c;防止DOS等其他网络攻击&#xff0c;保证服务端的安全。SPA的具体定义这里不细说&#xff0c;网上有太多的资料&am…

微信小程序常用组件

文章目录微信小程序常用组件buttoniconimagescroll-viewswipercheckboxaudiovideo微信小程序常用组件 button 简单使用 wxml <view class"container"><button type"default">default</button><button type"default" siz…

配置与管理Web服务器

IIS是一个非常重要的Web服务器组件&#xff0c;包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器&#xff0c;分别用于网页浏览、文件传输、新闻服务和邮件发送。 Web服务的工作原理 HTTP是应用级的协议&#xff0c;主要用于分布式、协作的信息系统。HTTP协议是通用的、无状…

第二章:创建虚拟机

创建Windows server&#xff1a;首先第一步就是打开我们的vm&#xff0c;然后找到上一章讲的主页图标创建新的虚拟机。点击这上面类似的&#xff0c;然后转站。博文地址&#xff1a;https://blog.csdn.net/ryduijftgvhj/article/details/127934939?spm1001.2014.3001.5502视频…

工作进入第七年,开始幻想四十岁的生活

2022年度总结&#xff0c;推迟了一些时间&#xff0c;但终究还是来了&#xff0c;忙里偷闲。 突然发现自己很久没有更新文章了&#xff0c;主要是因为自己换了部门&#xff0c;调整了技术方向&#xff0c;对于新技术不知道该怎么写。 2022年&#xff0c;那就依旧从工作、生活…

今天面了一个来华为要求月薪25K,明显感觉他背了很多面试题...

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

Pywirt:一款基于Python的Windows安全应急响应工具

关于Pywirt Pywirt是一款基于Python开发的网络安全工具&#xff0c;该工具专门针对Windows操作系统设计&#xff0c;可以帮助广大研究人员使用winrm并通过在Windows操作系统上收集各种信息来加快安全事件应急响应的速度。 该工具已在Windows 10操作系统上进行过完整测试。 功…