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

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 :导入的镜像
只包含原容器内的文件系统,缺失了镜像执行点,暴露端口,原镜
像的构建历史

相关文章:

  • 从service 到 JobIntentService 和 WorkManager
  • 香港电讯荣膺“卓越互联网接入服务提供商”奖项,赋能中国汽车产业数字化转型
  • Linux环境准备(安装VirtualBox和Ubuntu,安装MySQL,MySQL启动、重启和停止)
  • KUKA机器人不同的安装方式的设置
  • LeetCode面试经典 150 题(Java题解)
  • C++ vector 核心功能解析与实现
  • TOGAF 敏捷冲刺:15 天 Scrum 冲刺实践
  • 新能源汽车零部件功率级测试方案搭建研究
  • STM32F103_HAL库+寄存器学习笔记19 - CAN发送中断+CAN接收中断+接收所有CAN报文+ringbuffer数据结构
  • 1.Vue3 - 创建Vue3工程
  • LeetCode 热题100题解(Java版本)
  • Anaconda Prompt 切换工作路径的方法
  • mac 本地 docker 部署 nacos
  • 多路由器通过RIP动态路由实现通讯(单臂路由)
  • 使用谷歌浏览器自带功能将网页转换为PDF文件
  • liunx中常用操作
  • 树莓派4b 连接USB无线网卡
  • Spark_SQL
  • 基于亚马逊云科技 Amazon Bedrock Tool Use 实现 Generative UI
  • 人工智能在运动医学中的最新应用方向探析
  • 哈佛大学就联邦经费遭冻结起诉特朗普政府
  • 新闻1+1丨居民水电气计量收费乱象,如何治?
  • 国家税务总局镇江市税务局原纪检组组长朱永凯接受审查调查
  • 独家丨远洋渔船船长被害案嫌犯移送检方报捕,船上两段视频曝光
  • 神舟二十号全系统合练今日展开
  • 山西一国道发生塌陷,造成4车追尾2人死亡