微服务基础服务之docker篇

作者&投稿:拔哗 (若有异议请与网页底部的电邮联系)
~

什么是docker

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

传统虚拟化

Docker

为什么要用docker

对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。

使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。

而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

特性容器虚拟机 启动秒级分钟级 硬盘使用一般为MB一般为GB 性能接近原生弱于 系统支持量单机支持上千个容器一般几十个

基本概念

我们都知道,操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

前面讲过镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。

按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。

数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Centos安装docker18

常用的docker命令

常用的docker镜像

redis

mysql




dovps服务器简介
Dovps服务器是一种特殊的虚拟服务器技术,被称为"分裂型虚拟服务器",简称"Dovps"。它是在传统VPS的基础上进行技术提升,通过在一台物理服务器上利用虚拟化技术,创建出多个相互独立且隔离的小型服务器实例。每个小型服务器(VPS)又被进一步划分为多个微小的子服务器,这些子服务器拥有独立的操作环境,...

什么是DO命令?
DO 执行一个程序或一个过程文件中的 Visual FoxPro 程序或过程。一个程序文件自身又可以包含其他的 do 命令,这种嵌套最多可允许 128 级。当使用 DO 运行一个程序时,包含在程序文件中的命令一直执行,直到下列某一事件发生:遇到RETURN 语句。 执行了 CANCEL 命令。 执行了另一个 do 命令。 到达文件末尾。 执行了...

如何学习服务器入门知识,本人做服务器整机和主板的
1、服务器主板一般都是至少支持两个处理器——芯片组不同(往往是双路以上的服务器,单路服务器有时候就是使用台式机主板)。2、服务器几乎任何部件都支持ECC,内存、处理器、芯片组(但高阶台式机也开始支持ECC)3、服务器很多地方都存在冗余,高档服务器上面甚至连CPU、内存都有冗余,中档服务器上,硬盘、电源的冗余是...

最基础,最常用的DOS命令大全(不要长篇大论)
九、Nbtstat 显示本地计算机和远程计算机的基于 TCP\/IP (NetBT) 协议的 NetBIOS 统计资料、NetBIOS 名称表和 NetBIOS 名称缓存。Nbtstat 可以刷新 NetBIOS 名称缓存和注册的 Windows Internet 名称服务 (WINS) 名称。使用不带参数的 nbtstat 显示帮助。Nbtstat 命令行参数区分大小写。-a remotename 显示...

如何DOS入门,想学一下基本的命令
ftp ftp连接上某服务器(同win2K) 附:批处理命令与变量 1:for命令及变量 基本格式: FOR \/参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。 批处理每次能...

北大青鸟java培训:软件架构中的分层都有哪些类型?
不过领域层对基础层再来一次封装和整合,目的也是方便整合底层资源方便service层调用,简化业务层和基础层的复杂依赖静态业务对象:ViewObject:VO界面展示用到的数据对象DomainObject:DO领域层对象,一般可以简约的理解为javabean对象,从业务中抽取的基本模型类BussinessObject:BO业务对象一般也在service业务层,如...

优秀服务案例
优秀服务案例 上夜班的客房服务员李贝贝,在打扫棋牌室A厅时,B厅的客人提出换厅,但按照酒店的规定,需要办理加收费用手续,客人随即取消换厅的打算。客人可能因为没有换到A厅,心情不太好,在之后的服务中,不断提出种种要求,原本上夜班比较繁忙的李贝贝,过几分钟加水,过几分钟打开窗户,过几分钟...

DODAFDODAF的目的和范围
DODAF的适用范围广泛,涵盖了EA的整个生命周期,包括开发、维护和使用阶段,它是提升EA持续管理和管理效能的基础。特别地,DODAF还支持面向服务的架构(SOA)的开发实践,这意味着它不仅关注单一环节,而是作为一个整体框架,为EA的各个部分提供连贯性和一致性,促进整个EA体系的高效运作。

服务员如何为客人提供个性化的服务
酒店服务人员要快速掌握不同客人的个性特点,提供所需服务,提高客人满意度,从而为酒店赢得回头客。下面举具体例子来说明。某天,酒店大堂走来一位客人,全身上下均穿红色的,就连小提包也都是红色的。在客人办理完登记入住手续出去办点事后,总台服务员小严立即通知客房部,将客人房间内的窗帘及其他用品...

请教:环评知识中“SS、COD、BOD、TSP、DO等”的中文名称是什么?_百度...
tsp:总悬浮颗粒物,空气指标;do:水中溶解氧量。环评常见基础知识:工程分析是环境影响评价中分析项目建设影响环境内在因素的重要环节。工程分析的原则。当建设项目的规划、可行性研究和设计等技术文件中记载的资料、数据等能够满足工程分析的需要和精度要求时,应先复核校对再引用。对于污染物的排放量等可...

陇川县15329556837: 如何使用 Java 和 Docker 构建微服务 -
尚霍沙培: 在Java生态中,构建微服务的策略包括Container-less,Self-contained,以及In-container等.Container-less微服务将应用及其依赖打包成一个单一的jar文件.Self-contained微服务也是打包成一个单一的Jar文件,但它还包括一个嵌入式框架,这...

陇川县15329556837: 微服务为什么要选择docker 什么使用docker来部署服 -
尚霍沙培: 需要跨平台,经常需要反复使用,然后同时对核心部分可以提取出来,one app,run anywhere

陇川县15329556837: 如何在Kubernetes上进行微服务部署
尚霍沙培: 使用Rancher来运行Kubernetes有很多优势.大多数情况下能使用户和IT团队部署和管理工作更加方便.Rancher自动在Kubernetes后端实现etcd 的HA,并且将所需要的服务部署到此环境下的任何主机中.在设置访问控制,可以轻易连接到现有...

陇川县15329556837: 如何学习Docker -
尚霍沙培: 1.学习Docker,如果没有云计算的基本知识,以及内核的基本知识,那么学习并理解起来会稍吃力.作为容器,Docker容器的优势在哪,不足在哪,最好了解容器的实现是怎样的(简单了解);拥有镜像管理,Docker又该如何体现软件开发,...

陇川县15329556837: 如何学习spring cloud -
尚霍沙培: 使用Spring Cloud构建实际的微服务架构.基本概念:使用Docker进行集成测试混合持久化微服务架构服务发现API网关Docker使用Docker对每一个服务进行构建和部署.使用Docker Compose在一个开发机上进行端到端的集成测试....

陇川县15329556837: docker的好处,为什么使用docker来部署服务器 -
尚霍沙培: Docker的使用 Docker是一个轻量级的虚拟化解决方案,你可以实现秒级的虚拟机启动、非常轻量级的虚拟化.个人使用理解看来,它可以实现一个类似于版本管理Git一样的轻量化的状态保存. Docker有两个非常重要的概念: 镜像和容器. 镜...

陇川县15329556837: 如何在Python中使用ZeroMQ和Docker构建微服务架构 -
尚霍沙培: 微服务是什么?微服务是一种架构风格,它包括多个彼此间进行通信的独立进程.在设计上,这些进程具有高度的可扩展性、相互解耦而且一次只完成一个较小的任务.这些服务都拥有自己的资源以及通过网络实现彼此间通信的进程.相比于靠...

陇川县15329556837: docker部署javaweb 必须要有一个应用服务器吗 -
尚霍沙培: 使用docker来搭建微服务,也就是分成不同的容器来组成一个大服务的内部服务.这种情况下端口之间的访问可以通过run时指定--link参数指定某台容器;数据库文件通过-v(--volume)的方式指定从本地某个目录挂载到容器里面;容器文件之间的共享通过指定某个文件夹为VOLUME就可以共享,本质上还是把本地文件系统的目录挂载到多个容器中而已.

陇川县15329556837: 微服务是如何演变的,又为什么重要 -
尚霍沙培: 微服务的概念产生是顺应这样的需求:为了开发出速度更快、更有弹性且用户体验更佳的应用.这个概念等同于具有可扩展性的自动化系统,在简单的商业化架构上运行软件.由于容器所提供的经济效率,在2016年微服务将是一大主题.应用...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网