Docker 镜像制作 服务编排 私有仓库

news2024/11/27 20:36:11

Docker

  • Nginx部署
  • Redis部署
  • Dockerfile
  • 镜像制作
    • 容器转为镜像
    • dockerfile
  • Docker服务编排
    • Docker Compose
    • Docker Compose安装
    • 使用docker compose编排nginx+springboot项目
  • Docker私有仓库
    • 私有仓库搭建
    • 将镜像上传至私有仓库

Nginx部署

案例:需求
在Docker容器中部署Nginx,并通过外部机器访问Nginx。

实现步骤:
1.搜索Nginx镜像
2.拉取Nginx镜像

在这里插入图片描述
3.创建容器
在这里插入图片描述
在这里插入图片描述
4.测试访问

Redis部署

在这里插入图片描述


Dockerfile

思考:
Docker镜像的本质是什么?
是一个分层文件系统
Docker中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个G?
Centos的iso镜像文件包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层
Docker中一个tomcat镜像为什么有50OMB,而一个tomcat安装包只有70多MB?
由于docker中镜像是分层的,tomcat虽然只有70多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的tomcat镜像大小500多MB

Linux文件系统由bootfs和rootfs两部分组成
在这里插入图片描述

  • bootfs:包含bootloader (引导加载程序)和kernel (内核)
    rootfs: root文件系统,包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件
    不同的lintx发行版,bootfs基本一样,而rootfs不同,如ubuntu, centos等
    Docker镜像是由特殊的文件系统叠加而成
    最底端是bootfs,并使用宿主机的bootfs
    第二层是root文件系统rootfs,称为base image·然后再往上可以叠加其他的镜像文件
    统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
    一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。

    在这里插入图片描述

镜像制作

Docker镜像如何制作?

容器转为镜像

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

dockerfile

Dockerfile是一个文本文件
包含了一条条的指令
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
对于开发人员:可以为开发团队提供一个完全一致的开发环境
对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
对于运维人员:在部署时,可以实现应用的无缝移植


Docker服务编排

微服务架构的应用系统中一般包含若千个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
要从Dockerfile build image或者去dockerhub拉取image
要创建多个container
要管理这些container (启动停止删除)

服务编排:按照一定的业务规则批量管理容器

Docker Compose

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:
1.利用Dockerfile定义标行环境镜像
2.使用docker-compose.yml定义组成应用的各服务
3.运行docker-compose up启动应用

在这里插入图片描述

Docker Compose安装

在这里插入图片描述
在这里插入图片描述

使用docker compose编排nginx+springboot项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Docker私有仓库

Docker官方的Docker hub (https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。

私有仓库搭建

第一步:拉取私有仓库镜像
在这里插入图片描述
第二步:启动私有仓库
在这里插入图片描述
第三步:打开浏览器输入地址http://私有仓库服务器ip: 5000/v2/_catalog,看到{ “repositories” :[]}表示私有仓库搭建成功
在这里插入图片描述
第四步:修改daemon.json
在这里插入图片描述
第五步:重启docker服务
在这里插入图片描述

将镜像上传至私有仓库

第一步:标记镜像为私有仓库的镜像
在这里插入图片描述
第二步:上传标记的镜像
在这里插入图片描述

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

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

相关文章

【ARMv8 异常模型入门及渐进2 - 系统寄存器访问方法:op1,CRn,CRm,op2】

文章目录1.1 ARMv8 系统寄存器访问概要1.1.1 系统寄存器访问级别1.1.2 ARMv8 系统寄存器编码1.1 ARMv8 系统寄存器访问概要 ARMv8中,取消了协处理器,之前协处理器实现的功能,全部由系统寄存器来是实现。对于系统寄存器的访问,使用…

javaweb在校大学生贷款管理系统ns08a9

1系统主要实现:学生注册、填写详细资料、申请贷款、学校审核、银行审核、贷后管理等功能, (1) 学生注册:学生通过注册用户,提交自己的详细个人资料,考虑现实应用中的安全性,资料提交后不可修改;…

Springboot + MySQL+ JPA Ⅲ delete方法详解

一、deleteById(Id id) 和 delete(T entity) 为什么要把这两个方法放在一起呢?我们先看源码再说 deleteById源码(通过id进行删除) Transactional Override public void deleteById(ID id) {Assert.notNull(id, ID_MUST_NOT_BE_NULL);delet…

@爱打游戏的你,当游戏测试是什么感觉?

爱打游戏的你,当游戏测试是一种什么感觉? 去年《宝可梦朱紫》大火的那段时间,想必各位爱好游戏的友友们都刷到过这样的图吧:(量子纠缠)(天怎么黑了)(弹簧巨怪&#xff09…

手敲Mybatis(九)-结果集处理器

1.前言-背景介绍 上节我们处理了参数处理器,本节我们处理结果集处理器,之前我们写了一个DefaultResultSetHandler,我们把返回结果获取对象,填充值什么的写到了一起,流程没有进行解耦,并且只接收了Object的…

不通过鲁大师进行硬件检测

文章目录简介dxdiag系统信息设备管理器任务管理器PowerShelldxdiag系统信息设备管理器任务管理器PowerShellTODO:CPU-ZTODO:Everest参考文献简介 不少二手电脑重装系统后发现是假配置(特别是XP系统),可以使用系统自带…

基于Vue2实现滚动过程中数据懒加载

以下为实现滚动懒加载的过程: 1、在data对象中定义了items数组,用于存放已加载的item,loading状态,当前页数page,每页数量pageSize,以及距离底部的阈值threshold。 2、在mounted钩子函数中,首次…

Adaptive AUTOSAR——State Management(VRTE 3.0 R21-11)

状态管理是自适应平台服务中的一个功能集群。 在自适应平台中,状态决定了一组活动的自适应应用程序。 特定于项目的应用程序,即状态管理器,决定何时请求状态更改,从而更改当前活动的应用程序集。状态管理器是特定于项目的&#…

【Golang】三分钟让你快速了解Go语言为什么我们需要Go语言?

博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: Go语言核心编程近期目标:写好专栏的每一篇文章 目录一、Go语…

Pytorch基础 - 3. torch.utils.tensorboard

目录 1. 简介 2. 基本步骤 3. 示例1 - 可视化单条曲线 4. 示例2 - 可视化多条曲线 5. 示例3 - 可视化网络结构 1. 简介 Tensorboard是Tensorflow的可视化工具,常用来可视化网络的损失函数,网络结构,图像等。后来将Tensorboard集成到了P…

wps如何修改已经存在的目录标题内容?

如需了解更多办公应用的相关知识,可进入到赛效官网查看应用资讯或者应用问答栏目。 在WPS文档中,为方便大家查看文档中的内容,可以给文档内容添加目录,很多人由于对文档功能不太熟悉,所以当目录生成以后,想…

高效又稳定的ChatGPT大模型训练技巧总结,让训练事半功倍!

文|python前言近期,ChatGPT成为了全网热议的话题。ChatGPT是一种基于大规模语言模型技术(LLM, large language model)实现的人机对话工具。现在主流的大规模语言模型都采用Transformer网络,通过极大规模的数…

Day941.仓库版本管理 -系统重构实战

仓库&版本管理 Hi,我是阿昌,今天学习记录的是关于仓库&版本管理的内容。 当代码以及团队达到一定的规模以后,这会给项目仓库和版本的管理带来诸多问题。 一张常见问题的表格,不妨“对号入座”,看看项目有没…

【常见CSS扫盲雪碧图】从源码细看CSS雪碧图原理及实现,千字详解【附源码demo下载】

【写在前面】其实估计很多人都听过雪碧图,或者是CSS-Sprite,在很多门户网站就会经常有用到的,之所有引出雪碧图这个概念还得从前端加载多个图片时候页面闪了一下说起,这样给人的视觉效果体验很差,也就借此机会和大家说…

Linux查看串行端口

查看串口驱动 cat /proc/tty/driver/serial查看串口设备 dmesg | grep ttyS*[rootlocalhost driver]# cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 1: uart:16550A port:000002F8 irq:3 tx:0 rx:0 CTS|DSR|CD 2:…

攻防世界-inget(简单的SQL注入、万能密码)

目录 1、手工注入(万能密码原理) 2、sqlmap实现 3、常用参数 1、手工注入(万能密码原理) 打开链接,提示输入id并尝试绕过 尝试一下万能密码,使用逻辑语句使结果返回 构造payload /?id or 我们这里是…

Java虚拟机内存区域

Java虚拟机所管理的内存将会包括以下几个运行时数据区域 程序计数器 是一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要通过更改这个计数器的值来改变下一条需要执行的字节码。 由于各个线…

DAY 35 sed文本编辑器

文本三剑客:都是按行读取后处理。 grep 过滤行内容 awk 过滤字段 sed 过滤行内容;修改行内容 sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流 sed编辑器可以根据命令来处理数据流中的…

Shell编程(二)

上一章: Shell编程_做测试的喵酱的博客-CSDN博客 七、ping shell脚本,是一个面向过程的编程语言,没有类和对象的概念。用的最多的就是函数。 查看当前服务,是否能ping通baidu ping www.baidu.com [rootecs-39233 dev]# ping ww…

眺望2023:房企“三大护法”如何助力穿越周期?

2022 年的地产行业尤为艰难,土地和商品房成交量明显下滑,许多房企的业绩都呈现收缩态势。 不过,今年以来房地产市场似乎出现企稳信号。国家统计局数据显示,今年1~2月全国商品房销售面积和销售额的下跌幅度明显收窄,住…