微服务实战系列之玩转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(一)
微服务实战系列之云原生


在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值