網站首頁 編程語言 正文
? ? ? ? 問題的前提是這樣的,我們修改了平臺某一個模塊的代碼,想直接將修改放到docker鏡像中,以便我們的k8s環境可以直接使用這個鏡像來啟動容器;
? ? ? ? ?步? 驟:① 將需要修改的鏡像先運行起來,我們的這個鏡像會依賴平臺的其他配置,無法單獨運行,可以這樣僅僅把容器運行起來,不啟動里面的服務;
? ? ? ? ? ? ? ? ? ? ? ? ? ?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
? ? ? ? ? ? ? ? ? ? ? ⑦ 發現啟動報錯
? ? ? ? ? ? ? ? ? ? ? ? ?Warning ?Failed ? ? 8s (x2 over 9s) ?kubelet, worknode2 ?Error: Error response from daemon: No command specified
? ? ? ? ? ? ? ? ? ? ? ? ?若無執行命令,則會報上面的錯誤,因為我們是在pod啟動的服務,沒辦法像docker那樣直接再啟動的命令行里添加可執行的指令,只能像下面的做法,將需? ? ? ? ? ? ? ? ? ? ? ? ? ?要執行的命令,添加在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-06-21 git基礎之各版本控制系統介紹_其它綜合
- 2023-02-09 C++存儲鏈接性原理詳解_C 語言
- 2023-03-27 Python中反轉二維數組的行和列問題_python
- 2022-10-13 Python中?whl包、tar.gz包的區別詳解_python
- 2022-08-25 python數學建模(SciPy+?Numpy+Pandas)_python
- 2022-07-25 通過底層源碼理解YOLOv5的Backbone_python
- 2023-04-18 Android?懸浮按鈕之實現兔兔按鈕示例_Android
- 2023-03-25 Pandas快速合并多張excel表格的兩種方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支