我的编程空间,编程开发者的网络收藏夹
学习永远不晚

docker部署可执行jar包的思路与完整步骤

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

docker部署可执行jar包的思路与完整步骤

目录
  • 前言
  • 一、思路
  • 二、准备工作
    • 1、创建存放docker配置文件、jar包的文件夹
    • 2、创建bash文件
    • 3、创建容器配置文件
  • 二、构建镜像
    • 三、创建容器并运行
      • 四、删除多余或失败的容器、镜像
        • 1、观察已经有哪些容器
        • 2、删除指定容器
        • 3、观察已经有哪些镜像
        • 4、删除指定镜像
      • 五、docker世界中的一些术语
        • 六、补充
          • 总结

            前言

            我们构建的是运行bash文件命令的镜像,而不是构建jar包的镜像。好处就是,jar包有更新,只需替换jar包或者bash文件,而无须重新构建镜像。

            通常,用docker承载运行java程序,是将jar包先构建镜像,然后创建docker容器运行。如果jar包更新,就需要删除原镜像,重新来一遍,耗时耗力。有一个方案是,我们创建一个bash文件(linux的批处理文件),其内容是运行我们的jar包。然后创建运行该bash文件的docker镜像、docker容器。这样的好处是很明显的,jar包有更新,只替换jar包,甚至jar包改名了,也只是更改bash文件的内容而已,而镜像、容器,不会受到任何影响,无需作出任何改动。

            一、思路

            将docker容器中的指定文件夹挂载到宿主机上,更新jar包只需上传到宿主机指定路径,方便更新

            利用bash文件运行jar包,并构建该bash的镜像,代替构建直接运行jar包的镜像,利于镜像与jar包解耦。
            例如,app-1.0.0.jar 升级到 app-2.0.0.jar,只须更改bash文件的内容,而无须构建新的镜像。

            二、准备工作

            1、创建存放docker配置文件、jar包的文件夹

            在宿主机上,创建文件夹:/home/admin/app,用于存放bash文件和jar包。然后在该文件夹下,创建bash文件和容器配置文件

            2、创建bash文件

            vi run.sh
            
            java -jar /usr/data/app-1.0.0.jar
            

            /usr/data是docker容器内的路径

            我们不必真的到容器内创建这个路径

            后面会将此路径挂载到当前文件夹:/home/admin/app

            3、创建容器配置文件

            vi Dockerfile
            
            FROM java:8
            EXPOSE 8081
            ENTRYPOINT ["sh","/usr/data/run.sh"]
            

            8081是我们这个jar包的对外端口

            最后一句,有网上教程写的是 CMD [“sh”,“-c”,“/usr/data/hello.sh”],但不知道为什么,我这样写的话,容器运行后会提示没有权限!

            二、构建镜像

            仍然在/home/admin/app下,构建镜像。注意最后一个“.”,表示 Dockerfile 文件在当前目录下。

            docker build -t myapp:1.0.0 .
            

            三、创建容器并运行

            docker run -d -it --name=myapp -p 8081:8081 -v /home/admin/app:/usr/data myapp:1.0.0
            

            docker引擎重启后自动运行(也可以理解为操作系统重启后自动运行,如果docker是开机自动运行的话)

            docker run --restart=always -d -it --name=myapp -p 8082:8081 -v /home/admin/app:/usr/data myapp:1.0.0
            

            -v,将容器内的/usr/data挂载到宿主机的/home/admin/app。以后jar包有更新,丢到宿主机的/home/admin/app,然后重启容器即可。

            -d: 后台运行容器,并返回容器ID;

            -d, --detach=false Run container in background and print container ID

            -i: 以交互模式运行容器,通常与 -t 同时使用;

            -i, --interactive=false Keep STDIN open even if not attached

            -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

            -t, --tty=false Allocate a pseudo-TTY

            四、删除多余或失败的容器、镜像

            以上步骤,可能存在波折,不小心就创建了许多并不称心如意的容器和镜像,占用了心水名称和端口,必先删之而后快。

            1、观察已经有哪些容器

            docker ps -a

            加上 -a 参数,可以列出没有在运行的容器。

            2、删除指定容器

            docker rm $name 或者 容器ID

            3、观察已经有哪些镜像

            docker images

            4、删除指定镜像

            docker rmi -f $name 或者 镜像ID

            要删除镜像,首先要删除它派生的容器。

            五、docker世界中的一些术语

            我现在是这么理解的:

            docker是一个程序,它不是容器,而是容器引擎。

            我们的程序要用docker来跑,首先要创建一个开启我们程序的镜像。

            docker利用这个镜像,开启并运行容器。

            容器是镜像的实例,同一个镜像可以派生出多个实例。

            六、补充

            如上所述,我的思路是将容器内的文件夹挂载到宿主机的文件夹上,方便以后更新维护。如果没有这层考虑,其实也可以将jar包直接塞到容器里运行,不过一旦jar包有更新,需要重新构建镜像和容器。

            直接塞到容器里运行的方法是Dockerfile内容稍有点不同:

            FROM java:8
            MAINTAINER chenqu
            ADD demo-0.0.1-SNAPSHOT.jar demo.jar
            EXPOSE 8080
            ENTRYPOINT ["java","-jar","demo.jar"]
            

            总结

            到此这篇关于docker部署可执行jar包的思路与完整步骤的文章就介绍到这了,更多相关docker部署可执行jar包内容请搜索编程界以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程界!

            免责声明:

            ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

            ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

            docker部署可执行jar包的思路与完整步骤

            下载Word文档到电脑,方便收藏和打印~

            下载Word文档

            猜你喜欢

            Linux利用Shell脚本部署jar包项目的完整步骤

            一.安装JDK查看电脑的操作位数: uname -ar2017 x86_64 x86_64 x86_64 GNU/linux 如果这里显示是64位的就下载相应64位的包jdk的下载地址,推荐下载tar.gz的包 www.oracle.com
            2022-06-04

            编程热搜

            目录