C++学习之游戏服务器开发十一DOCKER的基本使用

目录

1.多实例部署方案

2.容器的概念

3.docker初识

4.docker仓库

5.docker镜像

6.docker容器

7.docker和虚拟机的区别

8.docker命令解释

9.dockerfile构建镜像

10.离线分发镜像


1.多实例部署方案

redis 命令( redis-cli XXXX
set key value: 存数据( value
get key :显示数据
del key :删除一对数据
lpush rpush 存链表节点
lrange 遍历
lrem 删除 n 个节点

2.容器的概念

redis 程序结构
cs 结构,数据放在服务进程的内存中
命令行客户端连接本地或远程地址访问
多种 API 可以访问: hiredis
程序结构简单,内部的数据结构和算法优秀
hiredisAPI 使用
C 函数库,包含头文件 <hiredis/hiredis.h> , 编译时指定链接参数为 -
L/usr/local/lib -lhiredis
redisConnect 跟数据库建立链接( redisFree 释放掉)
redisCommand 发命令并通过返回值取出结果( freeReplyObject
放掉)
运行时若提示找不到共享库,则在 .bashrc 最末端添加一句 export
LD_LIBRARY_PATH=/usr/local/lib , 重新打开终端运行

3.docker初识

怎样写框架
面向对象的软件设计 1. 画用例图 ---- 》分析需求(不要考虑太多扩展,不要考虑实现方
式)
回显功能的实现方式
kernel 类:基于 epoll 调度所有通道
通道抽象类:
写出缓冲区函数
将数据追加到缓冲区的函数
虚函数:读,写,获取 fd ,数据处理
标准输入通道子类
重写读和处理的函数
处理数据的函数:将数据交给输出通道
标准输出通道子类
重写写数据的函数
kernel 和通道类的调用
创建通道对象(成员赋值)
添加通道到 kernel
run

4.docker仓库

添加 FIFO 文件通道支持
FIFO 类继承 Ichannel
重写虚函数的过程中,重构抽象类 Ichannel
添加构造函数的参数用来表示管道文件和方向
添加转大写功能
写新类(数据处理类)封装转换大写字母的功能
拆掉标准输入通道和标准输出通道的包含关系,在标准输入通道中
包含数据处理类的对象
数据处理类中包含输出通道对象

5.docker镜像

责任链模式
处理者类和消息类
处理者类需要子类重写内部处理函数和获取下一个处理者的函数 处理者类的外部处理函数:当前环节处理 --- 》获取下一个环节 ---
下一个环节处理
重构当前代码
抽象通道类继承 handler 类,重写 internel_handle 函数
定义消息类: IO 方向和字节数据
功能处理类继承 handler
输入通道类 getnext 返回功能处理对象
功能处理类的 internel_handle 函数内直接调用 zinx_sendout 输出数
通道类, internel_handle 函数:
消息方向 IN readfd
消息方向 OUT ,缓存 bytemsg 对象中的 content
epollin 事件:创建 in 方向消息 -- 》交给 channle handle 函数
epollout 事件:调用通道的 flushout

6.docker容器

7.docker和虚拟机的区别

8.docker命令解释

Sourceinsight 快捷键
ctrl+o 弹出文件选择栏
alt+L 弹出符号栏
ctrl+ 鼠标左键 跳转到函数定义
alt + < 回退 alt+ > 下一个
ctrl+1 显示调用关系
shift+f8 高亮单词 ctrl+shift+f8 取消所有高亮
f7 查找符号

9.dockerfile构建镜像

分发框架
库分发:编译成 libXXXXX.so
编译参数: -fPIC -shared Makfiel 中添加 install 目标,拷贝库文件和头文件到 /usr/lib
/usr/include

10.离线分发镜像

sudo dpkg --remove cmake
sudo dpkg --remove libcurl4
容器技术
容器是操作系统和应用程序之间的一个虚拟层
应用程序可以在容器中运行(跟在操作系统中运行相同)。容器以
应用程序的形式运行在操作系统中
docker 程序架构
cs 架构
容器,镜像都是由守护进程管理
docker 的三大核心概念
镜像
静态的一组环境的集合
运行:创建容器,在容器中运行 XXXX
手动创建:
下载原始镜像
在基于该镜像运行 bash ,装所需软件
将装好软件的容器提交为新的镜像
脚本创建:
Dockerfile :规定镜像创建的过程
构建镜像
容器
运行时的一组环境,基于某个镜像创建
容器的修改不会影响镜像 运行容器:
守护运行 -d
端口映射 : -p 外端口号 : 内端口号
共享文件系统: -v 外绝对路径 : 内绝对路径
容器开始于要运行的进程,结束于进程退出
删掉所有容器:
仓库( dockerhub
类似 github ,是一个存储镜像的公共仓库
docker pull 作者 / 镜像名 : 标签名 拉去镜像
docker push 分享镜像到仓库中(分享之前先改名 -- docker tag
脚本创建 docker 镜像
1. 指定基础镜像( FROM XXXX
2. 装环境( RUN WORKDIR COPY
3. 指定执行点( ENTRYPOINT
ENTRYPOINT ["XXX"]
XXX 是且仅是镜像所运行的程序
CMD 命令指定你的内容会作为 XXX 的参数
run 镜像名 xxxx xxxx 会作为 XXX 的参数
CMD ["XXX"]
镜像缺省运行 XXX 程序
run 镜像名 xxxx :容器会执行 xxxx 程序
离线分发镜像
导出容器: docker export -o XXX.tar af85: 将容器中固化的内容导
导入镜像: docker import XXX.tar my_image:my_tag :导入的镜像
只包含原容器内的文件系统,缺失了镜像执行点,暴露端口,原镜
像的构建历史

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

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

相关文章

2025.4.21总结

工作&#xff1a;开了一场关于大模型版本的会议&#xff0c;回归一个问题单&#xff0c;提了两个单&#xff0c;把用例都执行完。如今都四月中旬了&#xff0c;上班年快要结束了&#xff0c;该到了冲刺KPI的时候了。 今日思考&#xff1a;刷到了jack叔叔的视频&#xff0c;讲了…

vite安装及使用

没特殊要求的项目,还是怎么简单怎么来╮(╯▽╰)╭ 一、Vite 基础知识 1. 什么是 Vite? Vite 是一个前端构建工具,专注于开发服务器速度和优化构建过程。特点: 快速冷启动:利用 ES 模块的原生支持,实现快速的开发服务器启动。即时热更新:在开发过程中,修改代码后可以…

ubuntu下gcc/g++安装及不同版本切换

1. 查看当前gcc版本 $ gcc --version# 查看当前系统中已安装版本 $ ls /usr/bin/gcc*2. 安装新版本gcc $ sudo apt-get update# 这里以版本12为依据&#xff08;也可以通过源码方式安装&#xff0c;请自行Google&#xff01;&#xff09; $ sudo apt-get install -y gcc-12 g…

cdq 系列 题解

从二维数点&#xff08;二维偏序&#xff09;到三维偏序。 用 cdq 分治可以解决二维数点问题。 1.洛谷 P1908 逆序对 题意 求所有数对 ( i , j ) (i,j) (i,j) 的个数&#xff0c;满足 i < j i<j i<j 且 a i > a j a_i>a_j ai​>aj​。 1 ≤ n ≤ 5 1…

计算机组成与体系结构:内存接口(Memory Interface)

目录 什么是内存接口 &#xff1f; 为什么需要特别设计“接口”&#xff1f; 什么是 MIPS&#xff1f;为什么它和内存接口有关&#xff1f; 内存接口的两种访问方式 串行访问&#xff08;Serial Access Model&#xff09; 并行访问&#xff08;Parallel Access Model&…

Java面试(2025)—— Spring MVC

什么是Spring MVC Spring MVC 是 Spring 框架的一个 基于 Java 的 Web 开发模块&#xff0c;它实现了 MVC&#xff08;Model-View-Controller&#xff09;架构模式&#xff0c;用于构建灵活、松耦合的 Web 应用程序。 它是 Spring 生态的核心组件之一&#xff0c;通过简化 HTT…

天翼云手机断开连接2小时关机

2025-04-21 天翼云手机断开连接2小时自动 天翼云手机 4元1个月 天翼云手机永不关机 天翼云手机不休眠 天翼云手机断开连接时&#xff0c;界面显示&#xff1a;离线运行&#xff0c;2小时后自动关机 电脑每小时自动连接一次 手机每小时自动连接一次

Redis——数据结构

目录 1.动态字符串SDS 1.1SDS底层源码 1.2 SDS动态扩容 1.3动态字符串SDS优点 2.IntSet 2.1底层结构 2.2有序性 2.3.IntSet结构扩容 2.4总结 3.Dict 3.1底层结构 3.2.Dict扩容 3.3Dict收缩 3.4.Dict的rehash 1.分配空间 2. 设置 rehashidx 3. 渐进式 rehash…

C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

LeetCode算法题(Go语言实现)_54

题目 给你两个正整数数组 spells 和 potions &#xff0c;长度分别为 n 和 m &#xff0c;其中 spells[i] 表示第 i 个咒语的能量强度&#xff0c;potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药水的能量强度 相乘 如果 大于等于 success &a…

内网穿透快解析免费开放硬件集成SDK

一、行业问题 随着物联网技术的发展&#xff0c;符合用户需求的智能硬件设备被广泛的应用到各个领域&#xff0c;而智能设备的远程运维管理也是企业用户遇到的问题 二、快解析内网穿透解决方案 快解析是一款内网穿透产品&#xff0c;可以实现内网资源在外网访问&#xff0c;…

Python+Word实现周报自动化的完整流程

一、技术方案概述 自动化报表解决方案基于以下技术组件&#xff1a; Python 作为核心编程语言python-docx 库用于处理 Word 文档pandas 库用于数据处理和分析matplotlib 或 plotly 库用于数据可视化Word 模版作为报表的基础格式 这种方案的优势在于&#xff1a;保留了 Word 文…

elastic/go-elasticsearch与olivere/elastic

在 Go 语言中&#xff0c;与 Elasticsearch 交互的客户端库有多种选择&#xff0c;其中 github.com/elastic/go-elasticsearch/v8 和 github.com/olivere/elastic/v7 是两个常用的库。这两个库的功能和用途有一些差异&#xff0c;以下是它们的详细对比&#xff1a; 1. github.c…

deepseek + kimi制作PPT

目录 一、kimi简介二、deepseek生成内容三、生成PPT四、编辑PPT 一、kimi简介 kimi是一款只能ppt生成器&#xff0c;擅长将文本内容生成PPT。 在这里&#xff0c;​​DeepSeek 负责内容生成与逻辑梳理​​&#xff0c;​​Kimi 优化表达与提供设计建议​​。 二、deepseek生…

【八大排序】冒泡、直接选择、直接插入、希尔、堆、归并、快速、计数排序

目录 一、排序的介绍二、排序算法的实现2.1 直接插入排序2.2 希尔排序2.3 直接选择排序2.4 堆排序2.5 冒泡排序2.6 快速排序2.7 归并排序2.8 比较排序算法的性能展示2.9 计数排序 个人主页<— 数据结构专栏<— 一、排序的介绍 我们的生活中有很多排序&#xff0c;比如像…

linux 查询目录文件大小

​ 在 Linux 系统中&#xff0c;准确地掌握目录和文件的大小对于磁盘空间管理至关重要。​本文将详细介绍如何使用 du&#xff08;disk usage&#xff09;命令逐层查看目录和文件的大小&#xff0c;并结合 sort 命令对结果进行排序&#xff0c;以便有效地识别和管理占用…

如何简单几步使用 FFmpeg 将任何音频转为 MP3?

在多媒体处理领域&#xff0c;FFmpeg 以其强大的功能和灵活性而闻名。无论是视频编辑、音频转换还是流媒体处理&#xff0c;它都是专业人士和技术爱好者的首选工具之一。在这篇文章中简鹿办公将重点介绍如何使用 FFmpeg 进行音频格式转换&#xff0c;提供一些常用的转换方式&am…

通信信号分类识别

通信信号分类识别 AlexNet网络识别InceptionV3、ResNet-18、ResNet-50网络识别 采用短时傅里叶变换将一维信号转换为二维信号&#xff0c;然后采用经典神经网络进行识别 支持识别BASK,BFSK,BPSK,QPSK,8PSK,QAM和MSK。 AlexNet网络识别 在这里插入图片描述 InceptionV3、Re…

TPshop项目-服务器环境部署(部署环境/服务,检查部署环境/服务,上传TPshop项目到服务器,配置文件的更改,安装TPshop)

目录 部署环境/服务&#xff0c;检查部署环境/服务 检查部署环境/服务 上传TPshop项目到服务器&#xff0c;配置文件的更改&#xff0c;安装TPshop 部署环境/服务&#xff0c;检查部署环境/服务 一般部署环境&#xff0c;会根据开发写的部署文档来一步一步的部署环境。 部署…

C++入门基础:命名空间,缺省参数,函数重载,输入输出

命名空间&#xff1a; C语言是基于C语言的&#xff0c;融入了面向对象编程思想&#xff0c;有了很多有用的库&#xff0c;所以接下来我们将学习C如何优化C语言的不足的。 在C/C语言实践中&#xff0c;在全局作用域中变量&#xff0c;函数&#xff0c;类会有很多&#xff0c;这…