云原生

云原生:定义了一条云时代应用从开发到交付的最佳路径,生在云上,长在云上

什么是容器:
容器就是一个视图隔离、资源可限制、独立文件系统的进程集合。
所谓视图隔离就是能够看到部分进程以及具有独立的主机名等;控制资源使用率则是可以对于内存大小以及CPU使用个数等进行限制。容器就是一个进程集合,它将系统的其他资源隔离开来,具有自己独立的资源视图。

容器具有一个独立的文件系统,因为使用的是系统的资源,所以在独立的文件系统内不需要具备内核相关的代码或者工具,我们只需要提供容器所需的二进制文件、配置文件以及依赖即可。只要容器运行时所需的文件集合都能够具备,那么这个容器就能够运行起来。

什么是镜像:
我们将这些容器运行时所需的所有文件集合称之为容器镜像。具备一次构建,到处运行的特点。

构建镜像:
采用dockerfile构建镜像,这是因为dockerfile提供了非常便利的语法糖,能够帮助我们很好的描述构建的每个步骤。当然每个构建步骤都会对已有的文件系统进行操作,这样就会带来文件系统内容的变化,我们将这些变化称之为changeset。当我们把构建步骤所产生的变化依次作用到一个空文件夹上,就能够得到一个完整的镜像。

语法糖:from行表示以下的步骤基于什么镜像进行构建,正如前面所提到的,镜像是可以复用的;
workdir行表示会把接下来的构建步骤都在哪一个相应的目录下进行,起到的作用类似于shell里面的cd;
copy行表示的是可以将宿主机上的文件拷贝到容器镜像内。
run行表示在具体的文件系统内执行相应的动作。当我们运行完毕之后就可以得到一个应用了;
cmd行表示使用镜像时的默认程序名字。

当有了dockerfile之后,就可以通过docker build命令构建出所需要的应用。构建出的结果存储在本地,一般情况下,镜像构建会在打包机或其他的隔离环境下完成。

那么这些镜像如何运行在生产环境或测试环境?这时候需要一个中转站或中心存储,我们称之为docker registry,也就是镜像仓库,其负责存储所有产生的镜像数据。我们只需要通过dicker push就能够将本地镜像推到镜像仓库中,这样一来,就能够在生产环境上或者测试环境上将相应的数据下载下来并运行了。

运行镜像:
分为三步:
1.从镜像仓库中将相应的镜像下载下来;
2.当镜像下载完成之后可以通过docker images来查看本地镜像;
3.当选中镜像之后,就可以通过docker run来运行这个镜像得到想要的容器,当然可以通过多次运行得到多个容器。一个镜像就相当于是一个模板,一个容器就像是一个具体的运行实例。因此镜像就具有了一次构建,到处运行的特点。

容器的生命周期:
容器是一组具有隔离特性的进程集合,在使用docker run的时候会选择一个镜像来提供独立的文件系统并指定相应的运行程序。这里指定的运行程序称之为initial进程,这个initial进程启动的时候,容器也会随之启动,退出的时候,容器也会随之退出。
因此可以认为容器的生命周期和initial进程的生命周期是一致的。
但是这样的做法也会存在一些问题,首先应用里面的程序往往是有状态的,比如mysql,redis等,其可能会产生一些重要的数据,当一个容器退出来被删除之后,数据也就会丢失了,这对于应用方而言是不能接受的,所以需要将容器所产生出来的重要数据持久化下来。容器能够直接将数据持久化到指定的目录上,这个目录就称之为数据卷。
数据卷有一些特点,其中非常明显的就是数据卷的生命周期是独立于容器的生命周期的,也就是说容器的创建、运行删除等操作都和数据卷没有关系,因为他是一个特殊的目录,是用于帮助容器进行持久化的。简单而言,我们会将数据卷挂载到容器内,这样一来容器就能够将数据写入到相应的目录里面了,而且容器的退出并不会导致数据的丢失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值