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.pswp.cn/pingmian/77607.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77607.shtml
英文地址,請注明出處:http://en.pswp.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;這…