当前位置: 首页 > news >正文

Docker实战

一、Docker安装

以下均以CentOS 7为例

1、安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2、启动和校验

# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

3、配置镜像加速

以阿里云为例,进入阿里云控制台->产品->容器->容器镜像服务ACR->镜像加速器->找到命令,按照示例程序来,例:

# 创建目录
mkdir -p /etc/docker# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker

二、Docker常用软件安装

2.1、MySQL

1、建三个文件夹data、conf、init,这里我建在了/root/mysql目录下,大家可根据自己情况

2、run,没有镜像的话会自动安装

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v /root/mysql/data:/var/lib/mysql \-v /root/mysql/conf:/etc/mysql/conf.d \-v /root/mysql/init:/docker-entrypoint-initdb.d \mysql

2.2、Redis

1、创建文件夹data、conf、log,这里我创建到/root/redis目录下

2、去官网下载配置文件 Redis官网  和自己版本对应好就行

然后修改一下配置文件,例如:

bind 127.0.0.1 #注释掉这部分,使redis可以外部访问

daemonize no#用守护线程的方式启动

requirepass 你的密码#给redis设置密码

appendonly yes#redis持久化  默认是no

tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

下载下来的redis.conf放置在conf目录下,再在log目录下新建redis.log文件夹,赋予777权限。

3、 安装Redis

docker pull redis # 安装最新版本docker pull redis:5.0.7 # 指定版本

4、运行

docker run -d \--name redis \-p 6379:6379 \-v /root/redis/data:/data \-v /root/redis/conf/redis.conf:/etc/redis/redis.conf \-v /root/redis/log/redis.log:/var/log/redis.log \-d redis:5.0.7 \redis-server /etc/redis/redis.conf

对上面命令进行一个解释:

docker run -d \--name redis \-p 6379:6379 \ # 把容器6379端口映射到宿主6379-v /root/redis/data:/data \ # 将主机上的 /root/redis/data 目录挂载到容器内部的 /data 目录,以便可以将 Redis 数据持久化到主机-v /root/redis/conf/redis.conf:/etc/redis/redis.conf \ # 将主机上的 /root/redis/conf/redis.conf 文件挂载到容器内部的 /etc/redis/redis.conf 文件,以便可以使用自定义的 Redis 配置文件-v /root/redis/log/redis.log:/var/log/redis.log \ # redis日志-d redis:5.0.7 \ # 指定要使用的 Redis 镜像及版本号,并在后台运行容器redis-server /etc/redis/redis.conf # # 在容器内部执行的命令,启动 Redis 服务,并使用 /etc/redis/redis.conf 配置文件

2.3、RocketMQ

1、创建文件夹rocketmq,其下broker、nameserver,broker下面创建conf、logs、store,nameserver下面创建logs、store

2、在/root/rocketmq/broker/conf下创建broker.conf,并配置如下:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSHnamesrvAddr=IP:9876
brokerIP1=IP
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911

namesrvAddr和brokerIP1必须是具体的IP地址

3、拉取rocketmq

docker pull apache/rocketmq  # 拉最新docker pull apache/rocketmq:4.9.4  # 拉取指定版本

4、启动nameserver

docker run -d \--name mqnameserver \-p 9876:9876 \-v /root/rocketmq/nameserver/logs:/root/logs \-v /root/rocketmq/nameserver/store:/root/store \-d apache/rocketmq:4.9.4 \sh mqnamesrv

解释

 -name mqnameserver | 把容器的名字设置为mqnameserver
-p 9876:9876| 把容器内的端口9876挂载到宿主机9876上面
-v /root/rocketmq/nameserver/logs:/root/logs | 把容器内的/root/logs日志目录挂载到宿主机的 
/root/rocketmq/nameserver/store:/root/store | 把容器内的/root/store数据存储目录挂载到宿主机
-e “MAX_POSSIBLE_HEAP=100000000” | 设置容器的最大堆内存为100000000
apache/rocketmq:4.9.4 | 使用的镜像名称
sh mqnamesrv | 启动namesrv服务

5、启动broker

docker run -d \--name mqbroker \--link mqnameserver:namesrv \-p 10911:10911 \-p 10909:10909 \-v /root/rocketmq/broker/logs:/root/logs \-v /root/rocketmq/broker/store:/root/store \-v /root/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.9.4/conf/broker.conf \-e "NAMESRV_ADDR=namesrv:9876" \-d apache/rocketmq:4.9.4 \sh mqbroker -c /opt/rocketmq-4.9.4/conf/broker.conf 

解释

–link mqnameserver:namesrv | 和rmqnamesrv容器通信
-p 10911:10911 | 把容器的非vip通道端口挂载到宿主机
-p 10909:10909 | 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876” | 指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker | 指定broker服务的最大堆内存
 apache/rocketmq:4.9.4 | 使用的镜像名称
sh mqbroker -c /opt/rocketmq-4.9.4/conf/broker.conf | 指定配置文件启动broker节点 

6、创建rocketmq-console服务

拉取rocketmq-console

docker pull pangliang/rocketmq-console-ng

启动rocketmq-console

docker run -d \--name mqconsole \-p 9999:8080 \-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.164.100:9876 \-Dcom.rocketmq.sendMessageWithVIPChannel=false" \pangliang/rocketmq-console-ng

解释上面语句

-name rmqadmin | 把容器的名字设置为rmqadmin
-e “JAVA_OPTS=-Drocketmq.namesrv.addr=IP:9876 | 设置namesrv服务的ip地址
-Dcom.rocketmq.sendMessageWithVIPChannel=false” | 不使用vip通道发送消息
–p 9999:8080 | 把容器内的端口8080挂载到宿主机上的9999端口

相关文章:

Docker实战

一、Docker安装 以下均以CentOS 7为例 1、安装Docker yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2、启动和校验 # 启动Docker systemctl start docker# 停止Docker systemctl stop docker# 重启 systemctl resta…...

什么是代理IP池?如何判断IP代理商的IP池是否真实优质?

代理池充当多个代理服务器的存储库&#xff0c;提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务&#xff0c;而无需担心被检测或阻止的风险。代理池为各种在线活动&#xff08;例如网页抓取、安全浏览等&#xff09;提高后勤保障。 读完…...

嵌入式养成计划-51----ARM--ARM汇编指令--内存读写指令--程序状态寄存器传输指令--软中断指令--混合编程

一百二十七、内存读写指令 通过内存读写指令可以实现向内存中写入指定数据或者读取指定内存地址的数据 127.1 单寄存器内存读写指令 将一个寄存器中的数值写入到内存&#xff0c;或者从内存中读取数据放在某一个指定寄存器中 127.1.1 指令码和功能 1. 向内存中写&#xff…...

RSA 2048位算法的主要参数N,E,P,Q,DP,DQ,Qinv,D分别是什么意思 哪个是通常所说的公钥与私钥 -安全行业基础篇5

非对称加密算法RSA 在RSA 2048位算法中&#xff0c;常见的参数N、E、P、Q、DP、DQ、Qinv和D代表以下含义&#xff1a; N&#xff08;Modulus&#xff09;&#xff1a;模数&#xff0c;是两个大素数P和Q的乘积。N的长度决定了RSA算法的安全性。 E&#xff08;Public Exponent&a…...

开发知识点-stm32/ESP32/Mega2560嵌入式设计

嵌入式设计 STM32四轴飞行器原理图解析小马哥 DragonFly四轴软件开发 13 STM32 SPI总线通讯SPI 总线协议简介SPI 物理层SPI 协议层SPI 通信时序 STM32硬件SPI接口简介SPI接口 利用库函数初始化配置 ESP32 “F:\res\marlin-2.0.x” “F:\res\Marlin-2.1.2” STM32四轴飞行器 小…...

亚马逊云科技海外服务器初体验

目录 前言亚马逊云科技海外服务器概述注册使用流程实例创建性能表现用户体验服务支持初体验总结 前言 随着云原生技术的飞速发展&#xff0c;越来越多的企业和开发者选择云服务器来作为自己的使用工具&#xff0c;云原生技术的发展也促进了云服务厂商的产品发展&#xff0c;所…...

外贸出口游戏设备亚马逊CE认证电磁兼容性(EMC)测试解析

游戏设备上架亚马逊出口欧盟需办理CE认证电磁兼容性&#xff08;EMC&#xff09;测试。 CE认证&#xff0c;作为欧盟的一项标准&#xff0c;成为了游戏设备行业中最为重要的认证之一。CE认证不仅是游戏设备进入欧洲市场的必要条件&#xff0c;也是保证产品符合欧洲市场标准的重…...

设计模式——组合模式(Composite Pattern)+ Spring相关源码

文章目录 一、组合模式定义二、例子2.1 菜鸟教程例子2.1.1 创建 Employee 类&#xff0c;该类带有 Employee 对象的列表。2.1.2 使用 Employee 类来创建和打印员工的层次结构。 2.2 JDK源码——java.awt.Container2.3 Spring源码——CompositeCacheManager 三、其他设计模式 一…...

大语言模型-LLM简介

大语言模型如此火爆&#xff0c;查了些资料整理一下&#xff0c;做个初步的了解。 语言模型的发展从开始的统计方法到使用神经网络&#xff0c;再到现在通过使用Transformer架构的模型训练大量数据&#xff0c;理解文本规则和模式&#xff0c;同时随着训练数据和模型的扩大&…...

创建多层级行索引,创建多层级行索引的DataFrameMultiIndex.from_product()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 创建多层级行索引, 创建多层级行索引的DataFrame MultiIndex.from_product() [太阳]选择题 使用pd.MultiIndex.from_product()&#xff0c;下列输出正确的是&#xff1a; import pandas as pd…...

用尽可能简单易懂的代码做个时间轴(时间线)

用尽可能简单的代码&#xff0c;做个时间线或者时间轴展示功能&#xff0c;效果如图&#xff1a; 特点&#xff1a;纯DIVCSS构建&#xff0c;需要展示到什么进度&#xff0c;直接加active属性就行了。 还贴心给配了个setProgress(step)函数&#xff0c;功能太简单&#xff0c;…...

STM32笔记—定时器

目录 一、TIM简介 二、基本定时器&#xff08;TIM6和TIM7&#xff09; 1. TIM6和TIM7简介 2. TIM6和TIM7的主要特性 3. TIM6和TIM7的功能 3.1 时基单元 3.2 计数模式 3.3 时钟源 三、通用定时器 1. TIMx(2、3、4、5)简介 2. TIMx主要功能 3. 时钟选择 4. 影子寄存…...

【力扣:1504】统计全1子矩阵

统计全1子矩阵个数 思路1&#xff1a;首先考虑深度优先模拟&#xff0c;从【0&#xff0c;0】出发向下、右扩展&#xff0c;符合条件res&#xff0c;最后输出res&#xff0c;比较直观&#xff0c;但重复进行了大量节点遍历操作&#xff0c;时间复杂度较高&#xff0c;数据量大时…...

排序算法之-选择

算法原理 在未排序的数列中找出最大&#xff08;或最小&#xff09;的元素&#xff0c;然后将其存入到已排序的数列起始位置&#xff0c;紧接着在剩余的未排序数列中继续查找最大&#xff08;或最小&#xff09;的元素&#xff0c;并将其放入到已排序的数列末尾&#xff0c;依…...

机器学习模板代码(期末考试复习)自用存档

机器学习复习代码 利用sklearn实现knn import numpy as np import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCVdef model_selection(x_train, y_train):## 第一个是网格搜索## p是选择查找方式:1是欧…...

使用sizeof()和strlen()去计算【数组】和【指针】的大小

文章目录 一、知识回顾1、回顾sizeof()、strlen的作用&#xff1a;2、数组和指针3、数组名 二、sizeof()、strlen()的使用区别1、注意区别&#xff1a;2、一维数组与一级指针3、二维数组与二级指针 三、总结回顾 一、知识回顾 1、回顾sizeof()、strlen的作用&#xff1a; siz…...

viple进阶4:打印空心三角形

题目&#xff1a;根据用户输入的行数n打印空心三角形&#xff0c;下图分别为n3、n4、n5和n10的效果图 第一步&#xff1a;观察效果图 输入的行数为3&#xff0c;打印结果就有3行&#xff1b;输入的行数为4&#xff0c;则打印结果就有4行&#xff1b;以此类推&#xff0c;输入的…...

Oauth2.0的内容

OAuth 2.0是一个授权协议&#xff0c;用于允许第三方应用程序访问用户在另一个应用程序上存储的受保护资源&#xff0c;而不需要将用户名或密码公开给第三方应用程序。 OAuth2.0基于客户端-服务器模型&#xff0c;通常需要三个主体&#xff1a;客户端、资源所有者和授权服务器…...

npm 下载包失败解决方案

1.【问题描述】使用 npm 下载vue项目依赖包时失败&#xff0c;版本不一致。 【解决方法】使用 npm install --force npm install --force 是一个命令行指令&#xff0c;用于在 Node.js 环境中使用 npm&#xff08;Node Package Manager&#xff09;安装包或模块。–force 参数表…...

C语言---插入排序、希尔排序、冒泡排序、选择排序、快速排序简单介绍

文章目录 插入排序希尔排序冒泡排序选择排序快速排序 本文主要介绍用C语言实现的一些排序方法&#xff0c;有插入排序、希尔排序、冒泡排序、选择排序和快速排序&#xff0c;文章中给出的例子都是按照升序排列的。 插入排序 若数组只有一个元素&#xff0c;自然不用排序&#…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...