一、本地使用idea的maven工程

1.先使用maven clean
2.maven package
3.在目录target下找到docker文件下的工程文件,将文件放到编译服务器任意的目录下,开始打包docker镜像

二、准备dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

dockerfile 命令详解 (dockerfile

FROM base_images
ADD ./target/xxx.jar  ./xxx.jar
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT  ["java","-jar","-Dspring.config.location=/xxx.yaml","/xxx.jar"]

本dockerfile简单解释:
1.FROM
定制的镜像都是基于 FROM 的镜像,这里的 base_images就是定制需要的基础镜像。
2.ADD 同 COPY
将从上下文目录中复制文件或者目录到容器里指定路径
3.RUN
RUN:用于执行后面跟着的命令行命令
4.ENTRYPOINT
用于运行程序,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

三、准备docker build shell脚本

# --no-cache:创建镜像的过程不使用缓存
# --tag, -t:镜像的名字及标签,通常name:tag 或者name格式,可以在一次构建中为一个镜像设置多个标签。
# -f 指定了dockerfile文件的目录
docker build --no-cache -t  xx/aa:1.0 -f ./DOCKERFILE ./

四、打包镜像保存镜像

执行docker build shell脚本,镜像生成,并将镜像保存到本地

# docker images 列出本地镜像
docker images | grep  aa
# 查到本地镜像后,将本地镜像保存成tar文件
docker save -o /home/aa.tar  xx/aa:1.0

然后将本地/home/aa.tar镜像scp到需要替换的环境

五、替换镜像

#docker load load镜像
docker load -i aa.tar

# docker tag 标记本地镜像,将其归为某一仓库
# docker tag tag前的版本号  tag后的版本号
docker tag xx/aa:1.0  after/aa:1.0

# 对于没有版本号的镜像可以使用images ID号来标记
# docker tag 1288383jk31 after/aa:1.0

# docker push 将本地的镜像上传到镜像仓亏,要先登录到镜像仓库
docker push after/aa:1.0

# docker pull 从远程镜像仓库中拉取更新指定镜像

# 找到k8s资源yaml文件
kubectl delete -f  xx-service.yaml
kubectl create -f xx-service.yaml
kubectl delete -f xx-deploy.yaml
kubectl create -f xx-deploy.yaml

# 查看替换之后的pod即可,pod已经拉取替换之后的镜像
kubectl get pod -n ns

以上即为替换镜像的具体流程,仅此记录。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐