用docker部署jar包_docker run 参数

用docker部署jar包_docker run 参数小小总结一、思路1、将docker容器中的指定文件夹挂载到宿主机上,更新jar包只需上传到宿主机指定路径,方便更新2、利用bash文件运行jar包,并构建该bash的镜像,代替构建直接运行jar包的镜像,利于镜像与jar包解耦。例如,app-1.0.0.jar升级到app-2.0.0.jar,只须更改bash文件的内容,而无须构建新的镜像。二、准备工作1、创建存放docker配置文件、jar包的文件夹在宿主机上,创建文件夹:/home/admin/app,用于存放bash文件和jar包。然

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

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

一、思路

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

2、利用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"]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188905.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月15日 上午10:40
下一篇 2026年4月15日 上午10:46


相关推荐

  • docker安装cboard

    docker安装cboarddocker 安装 cboard 操作系统是阿里云 CentOS 7 6 安装的 cboard 版本是 0 3 2docker 安装 cboard 安装 dockeryum yinstalldock 设置 docker 加速地址 cat gt etc docker daemon json lt

    2026年3月17日
    3
  • 解决docker下载镜像速度过慢_docker image是什么

    解决docker下载镜像速度过慢_docker image是什么前言上一篇讲到pull镜像,但是pull镜像的时候下拉的速度实在感人,有什么解决办法吗?我们只需将docker镜像源修改为国内的将docker镜像源修改为国内的:在/etc/docker/d

    2022年7月30日
    8
  • Jenkins(4)docker容器内部修改jenkins容器时间「建议收藏」

    Jenkins(4)docker容器内部修改jenkins容器时间「建议收藏」前言用docker搭建的Jenkins环境时间显示和我们本地时间相差8个小时,需修改容器内部的系统时间查看时间查看系统时间date-R进入docker容器内部,查看容器时间dockere

    2022年7月29日
    14
  • Docker安装RabbitMQ并安装延时队列插件

    Docker安装RabbitMQ并安装延时队列插件一、RabbitMQ简介RabbitMQ是由erlang语言开发,基于AMQP(AdvancedMessageQueue高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。二、docker安装RabbitMQ1、搜索镜像dockersearchrabbitmq2、拉取并运行容器dockerrun-dit–namerabbitmq-eRABBITMQ_DEFAULT_USER=guest-eR

    2022年5月10日
    101
  • docker dockerfile详解_进入docker容器命令

    docker dockerfile详解_进入docker容器命令前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

    2022年7月29日
    7
  • docker 镜像导入导出_镜像导出

    docker 镜像导入导出_镜像导出Docker镜像的导入导出本文介绍Docker镜像的导入导出,用于迁移、备份、升级等场景,准备环境如下:CentOS7.0Docker1.18导入导出命令介绍涉及的命令有export、import、save、loadsave命令dockersave[options]images[images…]示例dockersave-…

    2025年12月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号