Docker-01-容器技术和Docker简介
Posted liuguangjiji
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker-01-容器技术和Docker简介相关的知识,希望对你有一定的参考价值。
一、容器技术
1.1 容器技术的历史
1、在最开始,所有服务都时直接部署在物理机上的,具有如下缺点:
- 部署非常慢
- 成本非常高
- 资源浪费
- 难于迁移和扩展
- 可能会被限定硬件厂商
2、之后出现虚拟化技术,虚拟机通过Hypervisor层实现资源的调度
- 一个物理机可以部署多个app
- 每个app运行在一个虚拟机里面
虚拟化的优点:
- 资源池:一个物理机的资源分配到了不同的虚拟机里
- 很容器扩展:容器增加物理机和虚拟机
- 很容易云化:AWS,阿里云等
虚拟化的局限性:
- 每一个虚拟机都是一个完整的操作系统,要给其分配资源。当虚拟机数量增多时,操作系统本身消耗的资源势必增多!
3、容器技术的出现
什么是容器技术?
- 对软件和其依赖的标准化打包
- 应用之间相互隔离,效果略低于虚拟机之间的隔离
- 共享一个OS Kernel
- 可以运行在很多主流操作系统上
容器和虚拟机的区别:
容器解决了什么问题?
- 提供app的打包,环境一致性的问题!!
- 解决了开发和运维之间的矛盾
容器技术的发展历程:
二、Docker简介
2.1 什么是docker?
- Docker是容器技术的一种实现!
- Docker 是基于Go语言实现的开源项目,诞生于2013年初,最初的发起者dotClound公司,Docker自然开源后受到广泛关注;
- Docker项目目前已经加入Linux的基金会,遵循Apache2.0协议,全部开源代码均在https://gitHub.com/docker/docker上;
- Linux的操作系统的支持:Redhat RHEL 6.5/CentOS 6.5往上的操作系统,Ubuntu14.04操作系统,都默认带有docker的安装包;
- 与Docker的合作方:Google的PaaS(platform as a Service)平台及服务产品,微软的云平台Azure,亚马逊的AWS EC2 Container
- Docker 的主要目的:Build、Ship and Run Any APP Anywhere,即通过对应用组件的封装(Packing)、分发(Dispatcher)、部署(Deployment) 、运行(Runtime) 等生命周期的管理,达到一次封装到处运行;
- 组件可以是一个web的应用,也可以是一套数据库,甚至是一个操作系统;
- Docker 基于Linux的多项开源技术提供了高效敏捷和轻量级的容器方案,并且支持多种主流平台(Paas) 和本地系统上的部署。
2.2 docker与虚拟机比较
特性 | 容器 | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
硬盘使用 | 一般MB | 一般GB |
性能 | 接近原生 | 相对弱于 |
系统支持 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
2.3 docker的引擎
docker引擎是一个c/s结构的应用:
- Server是一个常驻进程;
- REST API 实现了client和server间的交互协议;
- CLI实现容器和镜像的管理,为用户提供统一的操作界面。
2.4 docker的架构
Docker使用C/S架构,Client 通过接口与Server进程通信实现容器的构建,运行和发布。client和server可以运行在同一台集群,也可以通过跨主机实现远程通信。
2.5 docker的核心概念
- 镜像(Image)
镜像是只读的,镜像中包含需要运行的文件(提供容器运行时所需的程序、库、资源、配置等文件,还包含了一些为运行时准备的一些配置参数)。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。
- 容器(Container)
Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
- 仓库(Repository)
从认识上来说,就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载,共享和管理Docker镜像,官方地址为:https://registry.hub.docker.com/
2.6 Docker底层核心技术
1、Namespaces
- 做隔离pid,net,ipc,mnt,uts
2、Control groups
- 做资源限制
3、Union file systems
- 做Container和image分层
参考文章:https://blog.csdn.net/huangjun0210/article/details/85680586#2_Docker_10
以上是关于Docker-01-容器技术和Docker简介的主要内容,如果未能解决你的问题,请参考以下文章