Docker容器镜像打成tar包

简述需求:

用户要求分系统输出镜像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 <容器名> 

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

 容器停止
 docker stop <容器 ID>

 

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

 docker restart <容器 ID>


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


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

 

 查看日志

 docker logs -f --tail 1000 <容器名>

执行 Dockerfile 

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

 新建并启动容器

docker run -d -p 9629:9629 --name demo-app --restart=always demo-app:1.0.0

 docker run -d -p 8800:8800 --name eomoss-app -v D:\\Develop\\docker\\eomoss-app\\bootstrap:/usr/eomoss/config eomoss-app:2.0.1
 参数解释:-d表示后台运行, -p 是端口映射【外部端口】:【容器端口】,--name是容器名称,-v是挂载目录映射【外部目录】:【容器目录】,always是无论退出状态如何,总是重启,-e 变量名=值

 

#这个需要服务注册到 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

 执行成功输出ID

 nacos中显示服务注册成功

查看镜像

docker images

 查看容器

docker ps -a

 镜像导出tar包

docker save > demo.tar demo-app:1.0.0

 镜像导入

docker load < demo-app.tar

 

 

请大家纠正!

posted @ 2024-11-10 22:59  不经意的瞬间  阅读(1399)  评论(0)    收藏  举报