当前位置: 首页 > news >正文

微服务实战系列之玩转Docker(七)

前言

在上一篇中,博主对通过docker registry完成私仓搭建的过程,进行了完整演示和说明。一个docker 环境(比如desktop),一个registry镜像,准备好这样的“2件套”,就能换来一个私有仓库了。

简单么? 中肯的说,是相当简单了,所以该动手时一定要动动手。有句话这么说:“所有目标都是黑暗的,只有行动才与光明相伴”。当你亲自走一遍自己未曾走过的路时,连路旁的花草都为你喝彩。

回顾一下,仓库有了,下一步是不是该琢磨搞点“粮食”了? 博主正好也是这么想的(😁😁😁)。请允许继续紧跟博主的步伐,快乐的实践,从此玩转docker不是梦,Let’s go!

在这里插入图片描述

Q:如何创建人生第一个镜像

1. 物质基础

1.1 docker env

首先需要自备一个可以运行docker的环境,就像运行JAR,必须提前安装JDK一样。这里博主做一个不恰当的比喻,docker好似一个镜像的“编译器”,负责构建 / 运行 / 删除镜像。如果是零基础的盆友,建议先用这个桌面工具——docker desktop,操作从简入难,非常适合小白上手。但是,如果各位有一个Linux环境,那就更好了,可以无缝对接日常的工作。
在这里插入图片描述

1.2 maven project

找一个简单的maven project,改造为容器部署模式。我们可以去开源社区,随处可以找一个springboot project,或者亲自create一个皆可以。

1.3 Dockerfile

Dockerfile就像电影剧本一样,主宰着镜像(image)的诞生过程。也就是说,你可以根据既定规则,“排兵布阵”。什么阶段需要什么样的资源,从哪里获取,如何组织战斗,均需要在这个文件中定义。

严肃的讲:

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

1.3.1 文件指令集
指令说明
FROM指定基础镜像,也就是明确当前新镜像的依赖镜像是什么。(必须
LABEL添加镜像说明,使用键值对的格式:key=value(支持多个,空格分隔)。
RUN指定在docker build过程中执行的命令。支持shellexec两种格式。
CMD指定容器启动时的命令。(写多条时,以最后一次为准
ENTRYPOINT指定容器默认的运行程序。(写多条时,不会覆盖之前的
EXPOSE声明容器运行时监听的特定网络端口。(仅用于声明
ENV在容器内部设置环境变量。
ADD将特定的文件、目录或远程URL复制到镜像中。(copy资源
COPY将文件或目录复制到镜像中。(copy资源
VOLUME为容器创建挂载点或声明卷。
WORKDIR设置后续指令的工作目录。
USER指定后续指令的用户上下文。
ARG定义在构建过程中传递给构建器的变量,为 docker build 命令设置。
ONBUILD当该镜像被用作另一个构建过程的基础时,添加触发器。
STOPSIGNAL设置发送给容器以退出的系统调用信号。
HEALTHCHECK定义周期性检查容器健康状态的命令。
SHELL覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令
1.3.2 指令的意义

定义如此丰富的指令,是为制作一个镜像预设各种有逻辑有时序的操作(“你说不是剧本,我不信”)。换句话说,在Linux部署应用时,我们通常需要进行几个步骤:

  1. 创建系统用户
  2. 创建用户目录
  3. 用户权限设置
  4. 配置服务端口
  5. 应用打包
  6. 上传应用(或资源文件)
  7. 启动应用

那么dockerfile其实也就是在描绘一张应用部署的“蓝图”

2. 镜像制作初体验

2.1 编写dockerfile

掌握了指令,我们可以开始熟练的使用它,博主以一个简单的示例着手,带着各位盆友体验一番dockerfile的妙处。基于springboot/springcloud的微服务盛行于当下, 博主就选择一个简单的微服务下手吧。其中dockerfile指令如下:

# 基础镜像
FROM  openjdk:8-jre
# 镜像的描述
LABEL author="一叶飞舟"
LABEL version="1.0"
LABEL description="该镜像用于部署一个微服务"
# 声明服务端口,与docker run -p含义不同,当然可以保持一致
EXPOSE 8888
# 挂载目录
VOLUME /home/ms
# 创建镜像工作目录
RUN mkdir -p /home/ms
# 指定目录
WORKDIR /home/ms
# 复制本地资源到镜像中
COPY ./jar/ondeservice.jar /home/ds/ondeservice.jar
# 定义启动容器默认执行的JAR
ENTRYPOINT ["java","-jar","ondeservice.jar"]

2.2 docker build

通过docker build完成镜像的创建,命令如下:

docker build -t ondeservice:latest .

该命令通过读取当前目录的dockerfile文件,完成镜像的生成。当然你也可以通过-f指定dockerfile目录,命令如下:

docker build -f /file/dockerfile -t ondeservice:latest .

镜像创建后,我们可以将其上传私仓,用于多环境部署,是不是很简单?

结语

本博将镜像的制作过程进行基本介绍和说明,以期抛砖引玉,我们完全可以施展各自的想法,在满足docker原则、规范的基础上,尽情的“玩”


系列回顾

微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生


在这里插入图片描述

相关文章:

  • golang设置远程调试
  • Mamba-yolo|结合Mamba注意力机制的视觉检测
  • Spring Boot整合Quartz使用的详解
  • 基于python的BP神经网络红酒品质分类预测模型
  • Github个人网站搭建详细教程【Github+Jekyll模板】
  • HTTP详解
  • MySQL之视图和索引实战
  • 使用git工具管理泰山派内核源码目录及抽打补丁简易流程
  • 【SpringCloud】 微服务分布式环境下的事务问题,seata大合集
  • STM32智能工业监控系统教程
  • 乾坤: 微前端项目切换时样式闪动(从无样式变为正常样式需要等 css chunk 文件加载完成, 加载延时受网速影响)
  • Apache Nifi挂接MQTT与Kafka实践
  • 认知觉醒:铸就非凡人生的进阶之路
  • 单例模式懒汉模式和饿汉模式
  • 2024年【甘肃省安全员B证】考试资料及甘肃省安全员B证模拟试题
  • 【347天】每日项目总结系列085(2018.01.18)
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Flannel解读
  • gulp 教程
  • idea + plantuml 画流程图
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Javascript 原型链
  • javascript从右向左截取指定位数字符的3种方法
  • maven工程打包jar以及java jar命令的classpath使用
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Spring-boot 启动时碰到的错误
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • SQLServer之索引简介
  • vue-router 实现分析
  • 程序员该如何有效的找工作?
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信小程序实战练习(仿五洲到家微信版)
  • 项目管理碎碎念系列之一:干系人管理
  • 异步
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 如何用纯 CSS 创作一个货车 loader
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #if 1...#endif
  • (145)光线追踪距离场柔和阴影
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (十六)一篇文章学会Java的常用API
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)ABI是什么
  • ******之网络***——物理***
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .net下的富文本编辑器FCKeditor的配置方法