第三十七章 springboot+docker(使用docker以容器方式启动服务)

一、下载centos镜像

  • docker pull hub.c.163.com/library/centos:latest
  • docker tag containId centos:7
  • docker run -i -t -v /Users/enniu1/Desktop/docker-data/software:/mnt/software centos:7
    • -i:以"交互模式"运行容器
    • -t:表示容器启动后会进入其命令行
    • -v:数据卷,这里将宿主机的/Users/enniu1/Desktop/docker-data/software目录(宿主机存放软件目录)挂载到容器的/mnt/software目录(容器存放软件目录)
      • 这里是为了让容器直接共享宿主机的/Users/enniu1/Desktop/docker-data/software目录下的软件

二、宿主机下载jdk之后移动到/Users/enniu1/Desktop/docker-data/software

三、容器内解压jdk

  • cd /opt
  • tar -zxf /mnt/software/jdk-8u102-linux-x64.tar.gz -C .
    • 将/mnt/software/jdk-8u102-linux-x64.tar.gz(直接共享的宿主机的挂载目录)解压到当前目录

四、设置环境变量

  • vi ~/.bashrc,添加如下两句

    • export JAVA_HOME=/opt/jdk
    • export PATH=$PATH:$JAVA_HOME/bin
  • source ~/.bashrc
    • 使文件生效
  • java -version进行测试

五、创建自己的镜像:zjg/jdk8:v1.0(第一种创建镜像的方式)

  • exit退出容器
  • docker commit 86e6187ea166 -m"install jdk8 to centos7" zjg/jdk8:v1.0
    • 86e6187ea166:原本的centos的容器id
    • zjg/jdk8:v1.0:镜像名与tag

六、编写代码并使用maven install为jar包,拷贝到与Dockerfile相同的包下

建立一个简单的springboot项目即可。

二者均在/Users/enniu1/Desktop/docker-data/file目录下

七、编写Dockfile文件

 1 #first java application
 2
 3 FROM zjg/jdk8:v1.0
 4
 5 ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
 6
 7 ENV JAVA_HOME /opt/jdk
 8 ENV PATH $PATH:$JAVA_HOME/bin
 9
10 CMD ["java","-jar","/opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"]

说明:

  • #注释
  • FROM zjg/jdk8:v1.0
    • 基于哪个镜像进行创建
  • ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
    • 将宿主机的myservice1-docker-1.0-SNAPSHOT.jar拷贝到容器的/opt/jar/目录下

      • 注意:这里的myservice1-docker-1.0-SNAPSHOT.jar最好与Dockerfile在同一个文件夹下,否则可能有问题(使用绝对路径和相对Dockerfile的路径都有问题)
      • 注意:/opt/jar/必须带有后边的"/"(目录),如果是/opt/jar这样的话,容器会创建一个jar文件而非目录
  • ENV JAVA_HOME /opt/jdk
  • ENV PATH $PATH:$JAVA_HOME/bin
  • CMD ["java","-jar","/opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"]
    • 容器启动之后,执行"java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"

八、创建服务镜像(第二种创建镜像的方式)

  • docker build -t="zjg/myservice1docker:v1.1" /Users/enniu1/Desktop/docker-data/file

    • -t:指定镜像名与tag
    • /Users/enniu1/Desktop/docker-data/file:dockerfile所在的目录

build日志如下:

 1 Sending build context to Docker daemon  13.8 MB
 2 Step 1 : FROM zjg/jdk8:v1.0
 3  ---> e7b4cf41e531
 4 Step 2 : ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
 5  ---> ea8401c3ee2e
 6 Removing intermediate container da2e0b518a1f
 7 Step 3 : ENV JAVA_HOME /opt/jdk
 8  ---> Running in db5d6bed3872
 9  ---> 2c123cd7d20f
10 Removing intermediate container db5d6bed3872
11 Step 4 : ENV PATH $PATH:$JAVA_HOME/bin
12  ---> Running in 66bbcdf76dfb
13  ---> 38ce4cac8d38
14 Removing intermediate container 66bbcdf76dfb
15 Step 5 : CMD java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar
16  ---> Running in 9359f360c777
17  ---> 1bbfc1635a71
18 Removing intermediate container 9359f360c777
19 Successfully built 1bbfc1635a71

每一个step都会创建一层镜像,以上就会创建五层镜像,在删除镜像的时候就会看出,会删除五层镜像。

  • docker images

九、启动测试

  • docker run -d -p 8014:8080 1bbfc1635a71
  • 浏览器访问:localhost:8014/docker/hello(自己springboot项目中的一个controller路径)
时间: 2024-12-13 05:12:58

第三十七章 springboot+docker(使用docker以容器方式启动服务)的相关文章

Gradle 1.12用户指南翻译——第三十七章. OSGi 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

第三十七章

道恒无为,侯王若能守之,万物将自化.化而欲作,吾将镇之以无名之朴.镇之以无名之朴,夫亦将不欲.不欲以静,万物将自定. 第三十七章1 你抱着怎样的心态,世界就怎样回馈你 道恒无为,侯王若能守之,万物将自化. (第三十七章 第1讲) 道”一直是无我利他(即无为)的,领导者如果能按照天之道做事,做到圣人之道,万物会自动跟着你改变,被你感化. 效仿天之道是解开<道德经>秘密的核心.你是什么心态,世界就怎么回馈你,世界会呼应你的心态. 各位朋友大家好,今天我们接着来聊<道德经>. 在讲之前先

第二十七章 springboot + zipkin(brave-okhttp实现)

本文截取自:http://blog.csdn.net/liaokailin/article/details/52077620 一.前提 1.zipkin基本知识:附8 zipkin 2.启动zipkin server: 2.1.在官网下载服务jar,http://zipkin.io/pages/quickstart.html,之后使用命令启动服务jar即可. nohup java -jar zipkin-server-1.5.1-exec.jar & 之后,查看与该jar同目录下的nohup.o

用dockerfile配置生成docker image并实现容器部署(redis服务)

一.Dockerfile文件: #Version 1.0 at 2016-04-12 #Author:http://sunday208.blog.51cto.com/ #Base images FROM centos #MAINTAINER MAINTAINER http://sunday208.blog.51cto.com/ #ADD ADD  tcl8.6.5-src.tar.gz /usr/local/src ADD  redis-3.0.7.tar.gz /usr/local/src A

第十七章 springboot + devtools(热部署)

技术介绍 devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件.属性文件.页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现这个启动比较慢,可以选择使用jrebel) 双类加载器机制:boot使用了两个类加载器来实现重启(restart)机制:base类加载器(简称bc)+restart类加载器(简称rc). bc:用于加载不会改变的jar(eg.第三方依赖的jar) rc:用于加载我们正在开发的jar(eg.整个项目里

【WPF学习】第三十七章 触发器

WPF中有个主题,就是以声明方式扩展代码的功能.当使用样式.资源或数据绑定时,将发现即使不使用代码,也能完成不少工作. 触发器是另一个实现这种功能的例子.使用触发器,可自动完成简单的样式改变,而这通常需要使用样板事件处理逻辑.例如,当属性发生变化时可以进行响应,并自动调整样式. 触发器通过Style.Triggers集合链接到样式.每个样式都可以有任意多个触发器,而且每个触发器都是System.Windows.TriggerBase的派生类的实例.下表列出了WPF中的选项. 表 继承自Trigg

《构建之法》第四&amp;十七章读书笔记

 <构建之法>第四&十七章读书笔记 一.         前言 再次阅读<构建之法>,愈发被其中生动有趣的举例吸引.作为一本给予软件工程学生的书籍,其不以枯燥的理论知识为核心,而是基于对知识和方法的引导.本次研读的这两章内容主要涉及了代码规范,两人结对与多人合作的团队方面等相关知识,从其中逐渐明白与人相处作业等方面的技巧与艺术.以下是我对这两章节的思考与疑惑. 二.        第四章<两人合作>. 本章主要涉及代码规范,极限编程,结对编程,两人合作不同阶段,

Docker学习-Docker存储

Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层. Data Volume. storage driver docker的镜像分层结构,如下所示:Docker镜像中引入层layer的概念,镜像的制作过程中的每一步擦欧总,都会生成一个新的镜像层 容器由最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存放在这些层中.这样的分层结构最大的特性是 Copy-on-Write: 新数据会直接存放在最上面的容器层. 修改现有数据会先从镜像层

使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇文章借助开源插件docker-maven-plugin 进行操作 以下操作.默认你已经阅读过我上一篇文章: Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo http://www.ymq.io/2018/01/11/Docker-deploy-spring-bo