網站首頁 編程語言 正文
? ? ? ? 問題的前提是這樣的,我們修改了平臺某一個模塊的代碼,想直接將修改放到docker鏡像中,以便我們的k8s環(huán)境可以直接使用這個鏡像來啟動容器;
? ? ? ? ?步? 驟:① 將需要修改的鏡像先運行起來,我們的這個鏡像會依賴平臺的其他配置,無法單獨運行,可以這樣僅僅把容器運行起來,不啟動里面的服務;
? ? ? ? ? ? ? ? ? ? ? ? ? ?docker run -d --name needModifyImage nbiot.com/needModifyImage:1.0.0?/bin/bash -c "tail -f /dev/null"
? ? ? ? ? ? ? ? ? ? ? ② 將需要修改的文件或者jar包,復制到已經運行起來的needModifyImage容器中(直接替換掉需要修改的文件或者jar);
? ? ? ? ? ? ? ? ? ? ? ? ? ?docker cp?needModifyImage_20210120.jar?needModifyImage:/opt/nbiot/config/jar/
? ? ? ? ? ? ? ? ? ? ? ? ? ?(切記,在將jar包copy到容器后,注意修改jar文件的操作權限,以防在運行的時候,無read權限出現報錯,chmod +x needModifyImage_20210120.jar)
? ? ? ? ? ? ? ? ? ? ? ③ 將修改后的needModifyImage容器,做成快照,保存到本地目錄;
? ? ? ? ? ? ? ? ? ? ? ? ? ?docker?export needModifyImage > needModifyImage_20200120.tar
? ? ? ? ? ? ? ? ? ? ? ④ 將快照(needModifyImage_20200120.tar)恢復成指定名字的新的鏡像;(在哪臺服務器運行此命令,就會在該服務器上生成鏡像)
? ? ? ? ? ? ? ? ? ? ? ? ? ?cat needModifyImage_20200120.tar |docker import - nbiot.com/needModifyImage:2.0.0
? ? ? ? ? ? ? ? ? ? ? ⑤ 將啟動k8s - pod 的配置helm chart中的鏡像版本修改成新的nbiot.com/needModifyImage:2.0.0,并啟動;
? ? ? ? ? ? ? ? ? ? ? ? ? helm install -n?myServiceName myServiceName/
? ? ? ? ? ? ? ? ? ? ? ⑥ 查看啟動的pod信息;
? ? ? ? ? ? ? ? ? ? ? ? ? kubectl describe pod?myServiceName
? ? ? ? ? ? ? ? ? ? ? ⑦ 發(fā)現啟動報錯
? ? ? ? ? ? ? ? ? ? ? ? ?Warning ?Failed ? ? 8s (x2 over 9s) ?kubelet, worknode2 ?Error: Error response from daemon: No command specified
? ? ? ? ? ? ? ? ? ? ? ? ?若無執(zhí)行命令,則會報上面的錯誤,因為我們是在pod啟動的服務,沒辦法像docker那樣直接再啟動的命令行里添加可執(zhí)行的指令,只能像下面的做法,將需? ? ? ? ? ? ? ? ? ? ? ? ? ?要執(zhí)行的命令,添加在yaml文件中;
spec:
securityContext:
runAsNonRoot: true
runAsUser: 10555
fsGroup: 10555
containers:
- name: server
image: xxxxxx-xxxxxx:xxxx
command: ["java", "-XX:MaxRAM=1825361100", "-XX:MaxRAMFraction=1", "-Djava.security.egd=file:///dev/./urandom", "-Dlog4j2.configurationFile=/staging/jars/log4j_server.xml", "-DCONFIGDIR=/appl/config", "-Dname=ServerId", "-jar", "/staging/jars/server.jar"]
imagePullPolicy: Always
? ? ? ? ? ? ? ? ? ? ? ? ?command: ["java","-XX:MaxRAM=1825361100", "-XX:MaxRAMFraction=1", "-Djava.security.egd=file:///dev/./urandom", "-Dlogback.configurationFile=/staging/jars/log4j_server.xml", "-DCONFIGDIR=/appl/config", "-Dname=SerId", "-jar", "/opt/nbiot/config/jar/needModifyImage_20210120.jar"]
原文鏈接:https://zhangdaopin.blog.csdn.net/article/details/112857833
相關推薦
- 2022-10-25 Python繪制loss曲線和準確率曲線實例代碼_python
- 2022-10-15 script 標簽 async 屬性
- 2024-07-15 Postman:Body類型中的x-www-from-urlencoded參數可以接受GET請求嗎?
- 2022-06-26 ASP.NET?Core中間件會話狀態(tài)讀寫及生命周期示例_實用技巧
- 2022-11-04 一文理解Redux及其工作原理_React
- 2023-12-18 Path環(huán)境變量點編輯無法展開
- 2022-07-03 python類的私有屬性和公共屬性說明_python
- 2023-10-15 #css# 超出高度,可上下滾動
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支