云原生技术之Docker入门

  • 时间:
  • 浏览:0
  • 来源:彩神大发11选5_神彩大发11选5官方

镜像一般是通过指令创建的只读文件,用来生成容器。一般有几个镜像是基于另外有几个镜像并加上你这一 额外的指令创建的,可不必可不可不都都可以通过有几个名为Dockerfile的文件来生成有几个镜像,在Dockerfile中的每一行指令会生成一层(layer)。当Dockerfile有改动须要重新生成镜像时,只须要重新生成改变的那先 层就可不必可不可不都都可以,可是我 就可不必可不可不都都可以使得镜像文件更加轻量、快速构建。

做过java的同学可是我对上图的架构法律法律法律依据比较了解,大伙儿通常会将有几个应用线程生成有几个war包,放进去 有几个tomcat容器当中并在一台虚拟机(VM)中启动运行,可是我 配置nginx的负载均衡策略,将来自用户的请求转发到某个tomcat应用上,你这一 基于主机或虚拟机部署的应用会指在以下几个问題图片:

大伙儿可是我有提到Docker可不必可不可不都都可以将应用线程打包成有几个镜像,如此怎么生成镜像文件呢?这就须要用到Dockerfile文件。它是有几个文本文件,用来配置镜像,Docker根据该文件生成二进制的镜像文件。以下是有几个Dockerfile文件示例:

可维护性差

可移植性差

五种文件系统类型,可不必可不可不都都可以运行在你这一 文件系统上,通过创建不同的层来使得容器文件系统更加轻量和快速。还有你这一 几种类似于的文件系统,包括AUFS、btrfs、vfs和DeviceMapper。

CGroups(Control Groups)

用来管理和扩展多个容器,须要同docker swarm共同工作

须要可是我安装应用所须要的运行环境,比如java应用所须要的jdk可是我jre,可是我须要重新部署有几个应用,就须要重新初始化环境再安装应用,过程繁琐; 另外可是我有几个应用须要jdk7的运行环境另外有几个应用须要jdk8,那在一台主机上就比较慢满足;

IMAGES

首先是容器化,大伙儿确定的方案是Docker。

Docker将应用线程与该线程的依赖,打包成有几个容器镜像,运行你这一 文件就会生成虚拟容器。线程在你这一 虚拟容器里运行,就好像运行在真实的物理机上,可是我 每个容器之间资源互相隔离可是我 就有被委托人的文件系统,可是我 容器之间线程不必相互影响,可不必可不可不都都可以通过下图来进行对比基于虚拟机和基于容器部署应用的区别:

以下命令是在Centos7上的命令,你这一 操作系统会指在你这一 差异

服务端是有几个名为dockerd线程,用来监听REST API请求并管理Docker对象,比如镜像、容器、存储卷及网络等。

Namespaces

CONTAINERS

Docker通过CGroup来限定容器不可不可不都都可以使用特定的资源。举例来讲,Docker可不必可不可不都都可以限制某个容器不可不可不都都可以使用几个cpu及内存资源。

以下是Docker的架构示意图:

镜像仓库(Docker Registries),镜像仓库用来存储Docker镜像。

关于Docker你这一 的你这一 操作命令,大伙儿可不必可不可不都都可以自行查阅,网上介绍的文章也比较多,参考文章:Docker 入门教程(https://docs.docker.com/get-started/)

Docker通过Namespaces来提供隔离的工作空间(Workspace),当你运行有几个容器的可是我,Docker为你这一 容器创建了数个不类似于型的Namespaces,主要有以下类型:

容器是通过镜像文件生成的运行实例。可不必可不可不都都可以通过REST API可是我docker client进行创建、启动、停止、移动可是我删除有几个容器。

执行完上述操作,docker服务可是我在运行了,可不必可不可不都都可以通过执行 docker version 和 docker info 命令查看docker的版本以及相关的信息。

大伙儿接下来就来看一下大伙儿是怎么一步步的解决那先 问題图片的。

可是我运行成功,就可不必可不可不都都可以都看新生成的镜像文件zcloud-document了。

可扩展性差

下图是有几个比较传统的软件架构:

Docker是客户端-服务器架构的应用,主要由以下次要组成:

有了Dockerfile文件可是我,就可不必可不可不都都可以用docker build命令创建镜像文件了。

应用的负载有高有低,缺乏稳定,当前应用负载大的可是我,大伙儿须要增加应用的数量,当应用负载降低的可是我,大伙儿须要降低应用的数量;

...

Docker采用go语言编写,可是我 使用了Linux内核中的几个结构来实现其功能,主要有如下:

SERVICE

UnionFS(Union File System)

无法资源隔离

命令行客户端(CLI),也可是我 大伙儿平常在控制台输入的docker命令行,通过调用REST API进行控制Docker daemon可是我同其进行集成。

可是我一台虚拟机部署多个应用,不同的应用可是我线程之间会相互影响;

可是我tomcat应用五种可是我所在的虚拟机操作系统老出问題图片时,则须要人工干预,比如配置nginx转发规则、执行重启操作等;