云原生技术之Docker入门


下图是一个比较传统的软件架构:cdn.xitu.io/2019/9/4/16cfb4bb0a18c6fe?w=527&h=299&f=png&s=6986″>做过java的同学可能对上图的架构方式比较了解,我们通常会将一个应用程序生成一个war包,放到一个tomcat容器当中并在一台虚拟机(VM)中启动运行,然后配置nginx的负载均衡策略,将来自用户的请求转发到某个tomcat应用上,这种基于主机或虚拟机部署的应用会存在以下几个问题:可移植性差需要事先安装应用所需要的运行环境,比如java应用所需要的jdk或者jre,如果需要重新部署一个应用,就需要重新初始化环境再安装应用,过程繁琐; 另外如果一个应用需要jdk7的运行环境另外一个应用需要jdk8,那在一台主机上就很难满足;可维护性差如果tomcat应用本身或者所在的虚拟机操作系统出现问题时,则需要人工干预,比如配置nginx转发规则、执行重启操作等;可扩展性差应用的负载有高有低,不够稳定,当前应用负载大的时候,我们需要增加应用的数量,当应用负载降低的时候,我们需要降低应用的数量;无法资源隔离如果一台虚拟机部署多个应用,不同的应用或者进程之间会相互影响;…我们接下来就来看一下我们是如何一步步的解决这些问题的。首先是容器化,我们选择的方案是Docker。Docker将应用程序与该程序的依赖,打包成一个容器镜像,运行这个文件就会生成虚拟容器。程序在这个虚拟容器里运行,就好像运行在真实的物理机上,并且每个容器之间资源互相隔离而且都有自己的文件系统,这样容器之间进程不会相互影响,可以通过下图来进行对比基于虚拟机和基于容器部署应用的区别:Docker是客户端-服务器架构的应用,主要由以下部分组成:服务端是一个名为dockerd守护进程,用来监听REST API请求并管理Docker对象,比如镜像、容器、存储卷及网络等。命令行客户端(CLI),也就是我们平常在控制台输入的开发云主机域名docker命令行,通过调用REST API进行控制Docker daemon或者同其进行集成。镜像仓库(Docker Registries),镜像仓库用来存储Docker镜像。以下是Docker的架构示意图:IMAGES镜像一般是通过指令创建的只读文件,用来生成容器。一般一个镜像是基于另外一个镜像并添加一些额外的指令创建的,可以通过一个名为Dockerfile的文件来生成一个镜像,在Dockerfile中的每一行指令会生成一层(layer)。当Dockerfile有改动需要重新生成镜像时,只需要重新生成改变的那些层就可以,这样就可以使得镜像文件更加轻量、快速构建。CONTAINERS容器是通过镜像文件生成的运行实例。可以通过REST API或者docker client进行创建、启动、停止、移动或者删除一个容器。SERVICE用来管理和扩展多个容器,需要同docker swarm一起工作Docker采用go语言编写,并且使用了Linux内核中的几个特性来实现其功能,主要有如下:NamespacesDocker通过Namespaces来提供隔离的工作空间(Workspace),当你运行一个容器的时候,Docker为这个容器创建了数个不同类型的Namespaces,主要有以下类型:pid namespace:提供进程隔离功能net namespace:管理网络接口ipc namespace:内部资源访问控制 (IPC:Inter Process Communication)mnt namespace:管理文件系统挂载uts namespace: 内核隔离以及版本识别(UTS:Unix Timesharing System)CGroups(Control Groups)Docker通过CGroup来限定容器只能使用特定的资源。举例来讲,Docker可以限制某个容器只能使用多少cpu及内存资源。UnionFS(Union File System)一种文件系统类型,可以运行在其他文件系统上,通过创建不同的层来使得容器文件系统更加轻量和快速。还有其他几种类似的文件系统,包括AUFS、btrfs、vfs和DeviceMapper。以下命令是在Centos7上的命令,其他操作系统会存在一些差异执行完上述操作,docker服务已经在运行了,可以通过执行 docker version 和 docker info 命令查看docker的版本以及相关的信息。我们之前有提到Docker可以将应用程序打包成一个镜像,那么如何生成镜像文件呢?这就需要用到Dockerfile文件。它是一个文本文件,用来配置镜像,Docker根据该文件生成二进制的镜像文件。以下是一个Dockerfile文件示例:有了Dockerfile文件以后,就可以用docker build命令创建镜像文件了。如果运行成功,就可以看到新生成的镜像文件zcloud-document了。关于Docker其他的一些操作命令,大家可以自行查阅,网上介绍的文章也比较多,参考文章:Docker 入门教程(https://docs.docker.com/get-started/)

相关推荐: yum安装openstack

yum安装openstack安装前准备:Cpu:开启虚拟化 (单台部署,改为4核)内存:8G磁盘空间 》40G ##测试用了28G网络: 1个千兆网卡 ##虚拟机中,加一个网卡,改为桥接安装依赖环境 (可参照kvm)Yum -y install gcc* li…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/13 20:18
Next 05/13 20:18

相关推荐