docker启动Java程序的方法步骤

创建一个简单的Spring boot web项目

idea工具创建Spring boot web项目,因为是测试,一直next就行。

写一个test API,用来访问,服务端口号可以不用改,我本地改成8701。

程序启动,发现程序不是默认的8080端口了,访问:http://localhost:8701/v1/hello

以上一个简单web项目建好了,下面我们通过docker来运行这个demo项目

第一步,你需要安装docker(这里不做详细步骤)。

第二步,我们需要一个有java环境docker镜像。我是从网易云镜像中心下载了一个,地址:https://c.163yun.com/hub#/library/repository/info?repoId=65430,大家也可以从阿里云等找到相应的具有java环境的镜像来制作也可以。

获取镜像,将镜像拉到本地

docker pull hub.c.163.com/housan993/centos7_jdk8:latest

第三步,我们现将demo项目打个jar包,mvn install,为了方便我生成的jar直接从target中拿到项目根目录下了。

第四步,我们在项目下编写一个Dockerfile文件,用来制作demo项目的镜像。
dockerfile文件里的命令大家执行百度

dockerfile文件内容:
FROM hub.c.163.com/housan993/centos7_jdk8:latest
COPY demo-0.0.1-SNAPSHOT.jar /
CMD java -jar demo-0.0.1-SNAPSHOT.jar

编写好dockerfile文件后,我们通过docker命令来build一个镜像。docker命令会自动找当前目录下的Dockerfile文件(默认的文件名要为Dockerfile),其次要指定目录路径 “.”表示当前目前

docker build -t demo-img .

看到如下日志,镜像就制作成功了。

第五步,我们根据制作的镜像来启动我们程序的容器,并将端口(8701)映射到把本机的8701出来。

docker run -d -p 8701:8701 demo-image

run完之后我们会得到一长串字符,这就是容器的CONTAINER ID。我们docker ps一下看看

我们再看看容器启动的日志,看看我们的java程序有没有运行起来

docker logs [CONTAINER ID]

由容器的日志,我们发现和我们本地启动一个Java程序的日志一模一样,那么我通过映射出来的端口,再访问下demo程序看看,行不行。

我们将demo容器停下,看我们还能访问不?
stop容器命令:docker stop [CONTAINER ID]
访问不了了。。。

我们再把我们的demo容器启动
docker start [CONTAINER ID]
又可以访问了。至此,我们通过docker 跑java程序的简单使用已经完成。

展望上面只是docker 跑java程序的简单使用。我们后续有兴趣的,可以自己将打包,build等命令进行shell脚本的分装,对容器版本进行自动生成,参数变量的动态取值都是可以的。只能说容器话非常好玩,将来自己项目自动化部署也是非常方便的,后面将介绍k8s容器编排工具,更为有趣。

到此这篇关于docker启动Java程序的方法步骤的文章就介绍到这了,更多相关docker启动Java程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-06-22

Docker容器自启动的实现方法

容器自启动 Docker提供了restart policy机制,可以在容器退出或者Docker重启时控制容器能够自启动.这种Restart policy可以保证相关容器按照正确顺序启动.虽然也可以通过进程监控的方式(如systemd)来完成这种动作,但Docker还是建议尽量避免使用进程监控的方式来 "自启动" 容器. Docker的 Restart policy与dockerd命令的--live-restore启动标志还有区别:--live-restore标志可以在Docker升级的

两种方式创建docker镜像的启动容器时区别介绍(总结篇)

Docker是建立在Linux内核基础上的,在目前的主流Linux系统中,都已经原生支持了Docker且使用体验也最好,当然,在Windows平台和MacOS系统中也支持Docker,只是需要使用类似Boot2Docker等虚拟化工具来提供Linux支持. 下面重点给大家介绍基于两种创建docker镜像的启动容器时区别,感兴趣的朋友可以跟着小编一起学习! 1.凡是用docker commit生成的镜像启动的时候可以加载一个启动自己应用的脚本,例如: docker run -d -P tomcat

Docker容器的创建、启动、和停止的方法

1.容器是独立运行的一个或一组应用,及他们的运行环境.容器是Docker中的一个重要的概念. 2.docker容器的启动有三种方式 a.交互方式,基于镜像新建容器并启动 例如我们可以启动一个容器,打印出当前的日历表 [root@rocketmq-nameserver4 ~]# docker run my/python:v1 cal ##my/python:v1为镜像名和标签 我们还可以通过指定参数,启动一个bash交互终端. [root@rocketmq-nameserver4 ~]# dock

Docker容器内应用服务自启动的方法示例

如果想把Docker容器内的应用服务随着容器开启时自启动.只需要将服务启动的脚本写在Dockerfile里,然后用Dockerfile重构镜像即可实现: 编写应用服务自启动脚本 编写Dockerfile 重构镜像 开启容器 编写服务自启动脚本(dockerd) (tomcat为例) #!/bin/bash # # # # chkconfig: 345 98 30 # description: tomcat program. # processname: tomcat # Source funct

Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

本文实例为大家分享了Dockerfile创建支持ssh服务自启动的容器镜像,供大家参考,具体内容如下 1. 首先创建一个Dockerfile文件,文件内容如下 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "kongxx@hotmail.com" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y openssh

Docker学习笔记之容器查看启动终止删除的方法

本文介绍了Docker学习笔记之容器查看启动终止删除的方法,分享给大家,具体如下: 查看 docker ps 主要有些参数要说一下 1. 不加参数,表示查看当前正在运行的容器 2. -a,查看所有容器包括停止状态的容器 3. -l,查看最新创建的容器 4. -n=x,查看最后创建的x个容器 列一下docker ps的结果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 这些分别代表什么 CONTAINER ID:容器ID,唯一标识容器

Docker如何进入启动容器

本文介绍了Docker如何进入启动容器,分享给大家,具体如下: 在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作. 这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等. 1.attach命令 attach命令是Docker自带的命令,命令格式为: docker attach [–detach-keys[=[]]] [–no-stdin] [–sig-proxy[=true]] Container

docker容器启动后添加端口映射

概要 网上有许多人在查找关于容器启动后能否进行端口映射的问题.我曾经也问过度娘,很遗憾我没找到.本文就这个问题给出一个解决方法,旨在抛砖引玉.本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解. 结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能. 步骤 创建两个容器并进行了端口映射,结果如图所示: 假如,我start一个容器,其内

Docker如何同时启动多个服务

前几篇Docker的文章介绍启动容器时都是只启动一个后台服务,今天来说说怎样通过supervisor来启动多个服务 1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下 FROM centos:centos6 MAINTAINER Fanbin Kong "kongxx@hotmail.com" RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rp

详解基于docker搭建lanproxy内网穿透服务

文档更新说明 2018年04月06日 v1.0 内网穿透相信是后端开发者经常遇到的需求,可是怎么实现呢?其实有现成的服务:花生壳.ngrok等,但是,最近花生壳宣布,免费版的内网穿透将不支持80端口映射了,而免费版的ngrok也不够稳定,于是乎,我就开始需找新的解决方案了 本文使用了docker.nginx,要全部搞懂的话需要一定的后端基础(当然,基本上入个门就可以了),个人认为还是有一定阅读门槛的,但是你如果只是想把服务搭建起来,按照步骤来做是不难的 1.概述 内网穿透其实就是用服务器做一个中

使用批处理实现启动和停止服务的代码分析(net start&net stop)

使用windows自带的net.exe功能启动或停止服务 启动/停止 服务的命令行格式为: net start / stop服务名称 (注意:服务先要设置为手动启动类型) 例子: 以启动和停止Oracle11g服务为例(ORCL是数据库名 ): 复制代码 代码如下: %启动Oracle的服务% @echo.服务启动...... @echo off net start OracleVssWriterORCL net start OracleDBConsoleorcl net start Oracl

基于C#实现Windows服务状态启动和停止服务的方法

本文以实例形式展示了基于C#实现Windows服务状态启动和停止服务的方法.非常实用.分享给大家供大家参考之用.具体方法如下: 首先先引用: System.ServiceProcess.dll 然后在引用命名空间: using System.ServiceProcess; 建立服务对象: ServiceController sc = new ServiceController("Server"); 服务运行则停止服务: if (sc.Status.Equals(ServiceContr

Docker daemon 无法启动: does not match with stored UUID错误解决办法

Docker daemon 无法启动: does not match with stored UUID错误 最近做项目,遇到Docker daemon 无法启动: does not match with stored UUID错误的问题,经过上网查找资料解决了问题,这里记录下解决办法. Docker 默认使用loop设备存储镜像.使用/var/lib/docker存储.但是当根分区不够大的时候(Centos7默认安装只有50G),那就麻烦了. 这里提供下修改方法(以centos7操作系统为例):

利用express启动一个server服务的方法

安装express $ npm install express --save 在node.js中,我们最常用的框架就是express Express 是一个基于 Node.js 平台的极简.灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用. 第一步 我们要引用这个框架 let express=require('express'); 第二步 我们把这个框架挂载在一个变量上面,使我们后面调用express内置方法方便 let app=express() 第

linux bash脚本监控启动停止weblogic服务的脚本写法

有时,linux系统需要做HA或者类似的功能,需要配置weblogic脚本来启动,停止,查看状态,可以如下方式写 命令形式:Weblogic server start|stop|restart|status ### BEGIN WLS Configration DOMAIN_NAME=base_domain SERVER_NAME=AServer ADMIN_URL="t3://ip:7001" DOMAIN_PATH=/Oracle/Middleware/user_projects/

linux环境下编写shell脚本实现启动停止tomcat服务的方法

第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat/apache-tomcat-8.0.48 SHUTDOWN=$tomcat_home/bin/shutdown.sh STARTTOMCAT=$tomcat_home/bin/startup.sh case $1 in start) echo "启动$tomcat_home" $STAR