Docker容器镜像打成tar包

news/2025/1/20 3:57:22/文章来源:https://www.cnblogs.com/bJydsJ/p/18537834

简述需求:

用户要求分系统输出镜像tar包,上传zip包利用平台统一管理。利用docker容器保存镜像进行打包,在另一台服务上使用。

利用 Dockerfile 来打tar包

什么是 Dockerfile?

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。

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

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。

1、构造 Dockerfile 

#构建镜像来自openjdk基础镜像
FROM openjdk
#通过镜像标签声明信息
LABEL maintainer="demo-app"
#新镜像构建成功后创建指定目录
RUN mkdir -p /usr/demo/config && mkdir -p /usr/demo/app
#拷贝文件到镜像中
COPY demo.jar /usr/demo/app/demo.jar
COPY db /usr/demo/app/db
#复制启动脚本,并且为脚本赋予执行权限
COPY start-jar.sh /usr/demo/app/start-jar.sh
RUN chmod +x /usr/demo/app/start-jar.sh
#暴露容器运行时的8800端口给外部
EXPOSE 8800
#启动方式一:直接依次启动每个jar包
#启动容器时启动,注意最后一个nohup java -jar不能加&使其在后台运行,因为需要一个前台进程保证docker容器的运行
#CMD nohup java -jar -Dspring.config.location=/usr/demo/config/demo-common-gateway.yml /usr/demo/app/demo-common-gateway.jar & nohup java -jar -Dspring.config.location=/usr/demo/config/demo.yml /usr/demo/app/demo.jar#启动方式二:通过sh文件启动多个jar包(未验证)
CMD ["/usr/demo/app/start-jar.sh","run"]

 

2、启动脚本

#!/bin/bash
cd /usr/demo/app
java -jar ./demo.jar #& 代表不输出日志
echo "restart over"

3、上传到有docker的服务器,这里用到了SQLite

 4、如何生成镜像

常用命令

删除
docker rm -f demo-app  

进入容器
docker exec -it <容器名> /bin/bash

 容器停止
 docker stop <容器 ID>

 

 停止的容器可以通过 docker restart 重启

 docker restart <容器 ID>


 镜像ID删除
 docker rmi <镜像ID/镜像标签>


 删除所有没用的镜像
 docker image prune

执行 Dockerfile 

docker build -t demo-app:1.0.0 -f Dockerfile .

 新建并启动容器

docker run -d -p 9629:9629 --name eomoss-app --restart=always demo-app:1.0.0#这个需要服务注册到 nacos 采用环境变量的方式,通过 run 命令变量传递 nacos 相关信息
docker run  -idt --name demo-app  -p9529:9529 -e NACOS_ADDR=172.31.0.1:8848 -e NACOS_WORKSPACE=1fa654fd-4927-4dd2-ad62-aa34dcb8b76d -e NACOS_NAME=nacos -e NACOS_PSW=nacos -e NACOS_GROUP=DEFAULT_GROUP --restart=always demo-app:1.0.0

 

 nacos中显示服务注册成功

 

查看镜像

docker images

 查看容器

docker ps -a

 转化为tar包

docker save > demo.tar demo-app:1.0.0

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830869.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高等数字集成电路课程作业(一)

高等数字集成电路课程作业的记录,都是很简单的toy design,只有VCS,Verdi和Design Compiler的脚本以及约束可供参考。1 向量前导1检测器 1.1 设计功能与要求 设计一个组合逻辑电路,检测输入32位0/1向量中从高到低第一个1出现的位置,如果向量为全0则输出32。例如:输入00011…

# 学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第七周学习总结

学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第七周学习总结 作业信息这个作业属于哪个课程 <班级链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求链接>(2024-2025-1计算机基础与程序设计第七周作业)这个作业的目标 …

黑马PM- B端产品-仓储模块设计

认识仓库库存调拨库存盘点典型出入库类型

学习笔记(三十四):ArkUi-Divider (分隔)

概述: 提供分隔器组件,分隔不同内容块/内容元素。 一、定义Divider()二、属性 1、vertical,设置分割线的方向vertical(value: boolean)使用水平分割线还是垂直分割线。 false:水平分割线;true:垂直分割线。 默认值:false 2、color,设置分割线的颜色color(value: Resour…

黑马PM- B端产品-销售模块设计

销售业务及产品设计销售出库业务及产品设计销售退货业务及产品设计

保险公司咨询帮助中心的搭建与维护

大家晚上好,这里是ai元启航,今天这篇分享的文章涉及行业是保险公司。 一、引言 随着保险行业的快速发展,客户对保险服务的需求日益多样化、个性化。为了更好地满足客户需求,提升服务质量,保险公司纷纷搭建咨询帮助中心。本文将探讨保险公司咨询帮助中心的搭建与维护策略,…

在 Github Action 管道内集成 Code Coverage Report

Github Actions 我们的开源项目 Host 在 Github,并且使用它强大的 Actions 功能在做 CICD。单看 Github Actions 可能不知道是啥。其实它就是我们常说的 CICD pipeline 或者叫 workflow。当我们 Push 代码到 Github,它会自动触发这些管道。它会帮我们自动 build 代码,跑 tes…

搭建帮助中心:高新技術行業的内部知识库解决

大家晚上好,这里是ai元启航,今天这篇分享的文章是我这周学习的ai知识之一。在高速发展的高新技术行业中,知识的快速迭代与技术的持续创新是企业保持竞争力的关键。为了有效应对这一挑战,构建一个高效、智能的内部知识库与帮助中心已成为高新技术企业的核心战略。本文将深入…

鸿蒙自定义组件生命周期

在开始之前,我们先明确自定义组件和页面的关系:自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。 页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个…

Tomcat 整体架构

Tomcat 是什么 Tomcat 是开源的 Java Web 应用服务器,类似的 Java Web 服务器还有 Jetty,Jboss Tomcat 整体架构Tomcat 核心组件 Tomcat 核心组件主要有以下四个 Server、Service、Connector、Container Server:即为一个 Tomcat 实例,每个主机可以启动多个 Server Service:…

第四章 数据编码与演化

本章中将介绍几种编码数据的格式,包括 JSON,XML,Protocol Buffers,Thrift和Avro。尤其将关注这些格式如何应对模式变化,以及它们如何对新旧代码数据需要共存的系统提供支持。然后将讨论如何使用这些格式进行数据存储和通信:在Web服务中,具象状态传输(REST)和远程过程调…