Docker Commit

1、在IDEA中通过maven package得到watchman-1.5.0-SNAPSHOT.jar,将其scp到baisheng1本地;

2、查看dbaservice2所在的pod

kubectl get po -owide | grep dbaservice2

结果: dbaservice-server-dbaservice2-6f4bb88df7-9p5zr       1/1       Running            0          23m       172.26.0.73   baisheng1

3、执行下面命令获取该pod的配置信息,从中找到容器ID(Container ID):是结果中"//"后面的长字符串

kubectl describe pods dbaservice-server-dbaservice2-6f4bb88df7-9p5zr

4、使用docker命令导入jar包到容器根目录(下面的长字符串是pod中的容器ID:Container ID)

docker cp watchman-1.5.0-SNAPSHOT.jar da2c9b6af26e0f25300d245261569ae64603573b0fdbcfd1cc17d14be0197615:/

5、进入该pod,先删除掉原来的watchman.jar,修改刚刚拷贝进来的watchman-1.5.0-SNAPSHOT.jar文件名为watchman.jar(因为java -jar启动命令定义的是启动watchman.jar,故要更名)

(1)进入该pod:kubectl exec -ti dbaservice-server-dbaservice2-6f4bb88df7-9p5zr -- bin/sh

(2)删除原来的jar包:rm -r watchman.jar

(3)更名:mv watchman-1.5.0-SNAPSHOT.jar watchman.jar

6、执行exit退出该pod

7、执行docker commit [container_id] [image_repo]:[image_tag],将container的修改更新到对应的image上

这里的container_id就是上面的容器ID,image_repo是本地的“transwarp/dbaservice“,image_tag是自定义的”i18n“

8、执行docker tag transwarp/dbaservice:i18n baisheng3:5000/transwarp/dbaservice:i18n   (用来在远程仓库创建TAG)

9、执行docker push baisheng3:5000/transwarp/dbaservice:i18n    (push到远程仓库)

10、执行kubectl set image deployment/dbaservice-server-dbaservice2 dbaservice-server-dbaservice2=baisheng3:5000/transwarp/dbaservice:i18n

就可将新的image打进该pod中,然后重启pod即可。

Dockerfile

  1. 新建一个文件夹,将需要替换的JAR包,放在此文件内

  2. 在文件内新建一个Dockerfile

    vi Dockerfile
  3. 根据所要替换的JAR包在image中的位置,编写Dockerfile

    FROM 172.16.1.99/postcommit/inceptor:master-2019-11-19-02-19-35-966260e9ad266e36df2cf968e0512f8594615072  // 1. 指定从哪个镜像开始改动,这里是inceptor master的某一个postcommit build
    RUN rm -f /usr/lib/inceptor/inceptor-engine*.jar /usr/lib/inceptor/lib/inceptor-core*.jar /usr/lib/inceptor/lib/inceptor-base*.jar  // 2.  删除镜像内的JAR包,这一步不是必须的
    COPY inceptor-engine-master-SNAPSHOT.jar /usr/lib/inceptor/  
    COPY inceptor-core-master-SNAPSHOT.jar inceptor-base-master-SNAPSHOT.jar /usr/lib/inceptor/lib/  // 3. 将新JAR包(一定要在同文件夹下)复制到镜像内相应位置
  4. 所有文件就位后,是这个样子

    [root@baisheng3 nucleon]# pwd
    /home/yewu/docker/nucleon
    [root@baisheng3 nucleon]# ll
    总用量 26920
    -rw-r--r-- 1 root root      426 11月 19 15:13 Dockerfile
    -rw-r--r-- 1 root root   371264 11月 20 20:57 inceptor-base-master-SNAPSHOT.jar
    -rw-r--r-- 1 root root 14857951 11月 20 20:57 inceptor-core-master-SNAPSHOT.jar
    -rw-r--r-- 1 root root 11572363 11月 20 20:57 inceptor-engine-master-SNAPSHOT.jar
  5. 在这个文件内运行docker build, 其中-t 指定image名,不写的话,后面只能用IMAGE ID(hash)做tag操作

    docker build -t <image_name_and_tag> ./
  6. docker push至repository

    docker push <image_name_and_tag>
  7. 对于需要更新的pod,直接删除。自动重启后就会拉取最新image覆盖本地同名image

    kubectl delete po $(kubectl get po | grep inceptor12 | awk '{print $1}')

    这句的意思是 找到所有名字带inceptor12的pod并删除

  8. TL;DR

    Dockerfile备好,文件放好,直接一次执行,全部办妥:(示例)

    docker build -t baisheng3:5000/transwarp/inceptor:nucleon ./;docker push baisheng3:5000/transwarp/inceptor:nucleon;kubectl delete po $(kubectl get po | grep inceptor12 | awk '{print $1}')
  9. 注意:build出的镜像名,和dockerfile内使用的基础镜像名(FROM xxx)不能一样,不然你会发现,跑几次就报错了(docker layer过多)

参考链接:TDH 5.0 rubik换包

baisheng5上换inceptor image 命令

修改image的方法

TDH 5.0更换image调试方法

https://docs.docker.com/engine/reference/commandline/tag/

docker image换包步骤的更多相关文章

  1. pycharm 安装第三方包步骤

    pycharm 安装第三方包步骤: 完成.

  2. DOCKER - 容器抓包

    https://help.aliyun.com/knowledge_detail/40564.html?spm=a2c4e.11153940.blogcont272172.10.b09e28a6AOd ...

  3. docker挂载war包到tomcat容器中的注意点和坑

    刚开始用docker,难免会遇到很多坑,这里分享一下: 一 挂载最好挂载目录 我刚开始挂载war包,结果发现容器里把挂载的war包当成目录了 二 本地路径必须是绝对路径,否则不管用 三 容器中使用vi ...

  4. Eclipse / android studio 添加第三方jar包 步骤

    eclipse 将第三方包放到libs文件夹后并没有引用. 基本步骤分为3步,具体介绍如下: 打开自己的Eclipse,在自己的Android工程上名上右键->Build Path ->C ...

  5. 利用docker搭建yii2 详细步骤

    定位镜像 在hub.docker.com 搜索yii2,并且最后定位到 https://hub.docker.com/r/codemix/yii2-base/codemix/yii2-base 然后在 ...

  6. App安全(一) Android防止升级过程被劫持和换包

    文/ Tamic 地址/ http://blog.csdn.net/sk719887916/article/details/52233112 前言 APP 安全一直是开发者头痛的事情,越来越多的安全漏 ...

  7. eclipse导出可执行jar包步骤

    按步骤图文说明 第一步:选择要导出的工程,右键[export] 第二步:双击Java文件夹下的[Runnable Jar File] 第三步:该步骤分4步走 3.1 从下拉框选择该jar的入口文件,即 ...

  8. docker部署war包到阿里云

    最近买了个阿里云服务器,配置1核2g内存,学习够了.记录下过程. 1,服务器相关,请看下图,云服务器主要配置是安全组和密钥,前者是开放端口,后者可以用于远程连接(比如我windows系统通过putty ...

  9. 一键部署 Docker Datacenter ---简化docker数据中心安装步骤

    DDC 简介 2016年2月下旬,Docker发布了企业级容器管理和服务部署的整体解决方案平台-Docker Datacenter,简称DDC.DDC 有三个组件构成:1. Docker Univer ...

随机推荐

  1. Python计算给定日期的周内的某一天

    先理一下思路:1.weekday会根据某个日期返回0到6的一个数字来表示星期几对吧,0==星期一我们来列一个表: [0,1,2,3,4,5,6] 2.知道了星期几之后,你可以计算出那一周相对于这个0到 ...

  2. AndroidStudio实现AIDL

    AIDL的使用步骤 aidl远程调用传递的参数和返回值支持Java的基本类型(int long booen char byte等)和String,List,Map等.当然也支持一个自定义对象的传递. ...

  3. Redis(1)——5种基本数据结构

    一.Redis 简介 "Redis is an open source (BSD licensed), in-memory data structure store, used as a d ...

  4. MySql5.7.28下载、安装、登陆详解

    进入MySql官网下载,页面如下 根据自己需求,选择适合自己的进行下载 然后解压安装包到自己的喜欢的路径 配置环境变量 添加环境系统变量 MYSQL_HOME:D:\Program Files\mys ...

  5. Markdown 语法简要规则

    Markdown简介 Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简 ...

  6. All In One

    set1 https://github.com/tianhang-f... set2 https://github.com/tianhang/F... set3https://github.com/t ...

  7. Js逆向-滑动验证码图片还原

    本文列举两个例子:某象和某验的滑动验证 一.某验:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s 未还原图像: 还原后的图: ...

  8. 【读后感】《Java编程思想》~ 异常

    [读后感]<Java编程思想>~异常 终于拿出压箱底的那本<Java编程思想>.这本书我年轻的时候就买了,但是翻过几页后就放弃了.没想到这两天翻了一下,真的有收获. 看了一下第 ...

  9. Vue项目二、vue-cli2.x脚手架搭建build文件夹及config文件夹详解

    build文件夹下 build.js 'use strict' // js的严格模式 require('./check-versions')() // node和npm的版本检查 process.en ...

  10. CORS(cross-origin-resource-sharing)跨源资源共享

    其实就是跨域请求.我们知道XHR只能访问同一个域中的资源,这是浏览器的安全策略所限制,但是开发中合理的跨域请求是必须的.CORS是W3的一个工作草案,基本思想就是:使用自定义的HTTP头部让浏览器与服 ...