简述需求:
用户要求分系统输出镜像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
执行 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
执行成功输出ID
nacos中显示服务注册成功
查看镜像
docker images
查看容器
docker ps -a
镜像导出tar包
docker save > demo.tar demo-app:1.0.0
镜像导入
docker load < demo-app.tar
请大家纠正!
标签:tar,demo,app,jar,usr,镜像,Docker,docker From: https://www.cnblogs.com/bJydsJ/p/18537834