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

news2024/11/25 16:40:51

前言

在上一篇中,博主对通过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(一)
微服务实战系列之云原生


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1952654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PLC 远程下载网关

一、 产品概述 SSF-BOX-100 是三石峰科技有限公司推出的工业级 PLC 远程下载网关,主 要用于 PLC 远程调试、程序上下载,为用户提供一种简单可靠的远程维护方案。 1.1 SGBOX 软件 SGBOX 软件是 SSF-BOX-100 网关的配套软件,可以查看设备状态…

FTP(File Transfer Protocal,文件传输协议)

文章目录 引言FTP管理工具FTP客户端FTP连接模式控制连接数据连接FTP命令/响应FTP命令FTP响应FTPSSFTP引言 FTP(File Transfer Protocal,文件传输协议)用于建立两台主机间的数据文件传输下载。使用客户/服务器(Client/Server)架构,基于TCP协议,服务端口为21。 FTP链接…

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端,输入以下命令: yarn create vite 输入完成以后输入项目名称、选择开发框架,选择开发语言,如下图所示,即可完成项目创建。 注意事项: 1. Node版本必须符合要求&…

linux nginx 命令记录,和转发

nginx: 查看配置文件:sudo find / -name nginx.conf 配置文件:/etc/nginx/nginx.conf 检查nginx.conf文件正确性 nginx -t -c /path/to/nginx.conf 或者 有nginx命令执行 nginx -t 查找nginx 可执行文件:which nginx /usr/sbin/nginx 安装Ng…

比 Xshell 还好用的 SSH 客户端,MobaXterm 太酷了!

由于需要连接远程 Linux 服务器,早期使用过 Putty,SecureCRT,后面主要使用 Xshell。 自从接触了 MobaXterm之后,个人感觉比 Xshell 更好用,堪称SSH客户端的神器啊! MobaXterm 和 Xshell 的关系&#xff0…

几个小创新模型,Transformer与SVM、LSTM、BiLSTM、Adaboost的结合,MATLAB分类全家桶再更新!...

截止到本期MATLAB机器学习分类全家桶,一共发了5篇,参考文章如下: 1.机器学习分类全家桶,模式识别,故障诊断的看这一篇绝对够了!MATLAB代码 2. 再更新,机器学习分类全家桶,模式识别&a…

AI绘画:艺术与科技融合的新篇章

随着人工智能(AI)技术的飞速发展,AI绘画作为一种新兴的艺术形式,正逐步改变着传统艺术创作的格局。从早期的简单模仿到如今的个性化创作,AI绘画不仅提升了艺术创作的效率和质量,还开辟了全新的应用场景和商…

Temu卖家必读:测评补单策略,提升销量与转化率!

拼多多旗下的跨境电商平台Temu,凭借其独特的广告和低价策略,迅速在美国市场站稳脚跟,并在欧美市场取得初步成功后,马不停蹄地迈向了更广阔的海外市场。去年七月,Temu正式进军亚洲市场,日本与韩国成为其首批…

免费SSL证书的安全性与获取指南

SSL证书是一种数字凭证,用于加密用户与网站之间的信息交换,以确保传输的数据不被第三方窃取。它像是一个数字版的密封印章,为数据的传输过程提供了一层保护膜。 免费的SSL证书通常由CA机构提供,它们同样可以提供基础数据的加密服…

MATLAB基础:图像绘制

今天我们继续学习MATLAB中图像的绘制。 平面图形 plot(x,y): x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n): 多组折线,可选择表示折线的属性,如颜色、线型…

Excel的“只读方式”有什么方法可以变为可直接编辑吗?

在日常工作中,我们经常遇到Excel文件被设置为“只读方式”的情况,这可能是由于文件权限设置、文件共享需要或文件被下载时自动设置为只读等多种原因造成的。然而,当需要修改或编辑这些文件时,我们就需要将其从“只读方式”转换为可…

LlamaIndex:向 LLM 添加个人数据

LlamaIndex 是您构建基于 LLM 的应用程序的友好数据助手。您可以使用自然语言轻松地获取、管理和检索私有数据和特定领域的数据。 LlamaIndex 是一个针对大型语言模型 (LLM) 应用程序的数据框架。GPT-4 等 LLM 在海量的公共数据集上进行预训练,开箱即用即可实现令人…

微凌客旅游管理系统uniapp源码搭建教程

一.搭建教程环境 系统环境:CentOS、 运行环境:宝塔 Linux 网站环境:Nginx 1.15.10 MySQL 5.6.46 PHP-7.1-7.3 常见插件:fileinfo ; redis 三.系统搭建图片

优化算法|自适应大邻域搜索算法及MATLAB代码实现

回来填坑了,本篇推文将详细讲解ALNS算法求解VRP问题及MATLAB代码实现。 算法介绍 节约算法构造初始解 function routessaving_init(DistMatrix, Demand, Cap) C_EPS1e-1;Nsize(DistMatrix,1); routescell(numel(2:N),1); for i1:numel(routes) % 每个节点单独一条…

c生万物系列(继承)

上一节笔者用宏和文件模拟了封装,这一节笔者继续使用c语言模拟继承。 简单介绍就是:在结构体里面重新定义需要继承的结构体。 调用时,使用&obvir,可以想象我们定义数组*p,p表示该数组第一个成员,这是因为结构体声…

【教程】vscode添加powershell7终端

win10自带的 powershell 是1.0版本的,太老了,更换为powershell7后,在 vscode 的集成终端中没有显示本篇教程记录在vscode添加powershell7终端的过程 打开vscode终端配置 然后来到这个页面进行设置 查看 powershell7 的安装位置&#xff…

【计算机毕业设计】869渔具在线销售网站

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【调色板软件】免费、开源的调色板软件,焰火十二卷,提供了多种功能来生成一组调和色彩NO.108

本文一共:316 个字,需要阅读:1 分钟,更新时间:2024年7 月27日,部分内容具有时效性,如有失效请留言,阅读量:0 使用平台: Windows/macOS/CentOS/Ubuntu 由于我不是很懂,有需要的人自己摸索吧 资源来源于网络,免费分享仅供学习和测试使用&…

秒懂C++之string类(下)

目录 一.接口说明 1.1 erase 1.2 replace(最好别用) 1.3 find 1.4 substr 1.5 rfind 1.6 find_first_of 1.7 find_last_of 二.string类的模拟实现 2.1 构造 2.2 无参构造 2.3 析构 2.4.【】运算符 2.5 迭代器 2.6 打印 2.7 reserve扩容 …

Linux嵌入式学习——数据结构——概念和Seqlist

数据结构 相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构 集合,所有数据在同一个集合中,关系平等。 线性,数据和数据之间是一对一的关系。数组就是线性表的一种。 树, 一对多 图,多对多 …