docker(一)
一、docker 概述
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何借口,几乎没有性能开销,可以很容易地在机器和数据中心运行。最重要的是,他们不依赖与任何语言、框架或者包装系统。
现在接触的软件是怎么发布的?
windows 下的 2-16-office.exe,不能在 xp 上运行;mk.rpm 在 redhat 系统 linux 上运行,但是不能再其他linux 版本上运行。现在发布的软件包和系统相关。
LXC 为 linux container 的简写,linux container 容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其它复杂性。
LXC 主要通过来自 kernel 的 namespace 实现每个用户实例之间的相互隔离,通过cgroup 实现对资源的配额和度量。

总结:相对 VM 虚拟机,少了虚拟操作系统这一层,所以 docker 效率高。
二、工作流程。

工作流程:服务器 A 上运行 docker Engine 服务,在 docker Engine 上启动很多容器 container,从外网 Docker Hub 上把 image 操作系统镜像下载下来, 放到 container 容器运行,这样,一个容器实例就运行起来了。
dockerhub:dockerhub 是 docker 官方的镜像存储站点,其中提供了很多镜像提供用户下载,如ubuntu,centos 等系统镜像。需要用户注册一个账号,在网站上创建一个 docker 仓库。
三、Docker 核心技术
1、Namespace -- 实现 container 的进程,网络,消息,文件系统和主机名的隔离。
2、cgroup -- 实现对资源的配额和度量。
注:cgroup 的配额,可以指定实例使用的 cpu 个数,内存大小等。
四、docker特性:
- 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
- 资源隔离:系统资源,像 CPU 和内存等可以分配到不同的容器中,使用cgroup。
- 网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和 IP 地址。
- 日志记录:Docker 将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实例检索或批量检索。
- 变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
- 交互式 shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
五、优缺点
优点:
- 一些优势和 VM 一样,但不是所有都一样
- 比 VM 小,比VM快,Docker 容器的尺寸减小相比整个虚拟机大大简化了分布到云分发时间和开销。Docker 启动一个容器实例时间很短,一两秒可以启动一个实例。
- 对于在笔记本电脑,数据中心的虚拟机,以及任何云上,运行相同的没有变化的应用程序,IT 的发布速度更快。
- Docker 是一个开放平台,构建,发布和运行分布式应用程序。
- Docker 使应用程序能够快速从组件组装和避免开发和生产环境之间的摩擦。
- 可以部署在公司局域网或云虚拟机使用它
- 开发人员并不关心具体哪个linux操作系统
- 使用docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们选择的操作系统。然后,在部署时一切是完全一样的,因为一切都在 dockerimage的容器上运行。
缺点:
- docker 用于应用程序时是最有用的,但不包含数据,日志,跟踪和数据库等通常应放在 docker 容器外,一个容器的镜像通常都很小,不适合存大量数据,存储可以通过外部挂载的方式使用。比如使用NFS,ipsan,MFS等。一句话:docker 只计算,存储交给别人。
docker(一)的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
- docker for mac 学习记录
docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...
- scrapy爬虫docker部署
spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...
- [原][Docker]特性与原理解析
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...
- 开发者的利器:Docker 理解与使用
困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- 微服务与Docker介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
随机推荐
- linux 添加本地yum源
1.查看自己是否安装了 yum rpm -qa|grep yum 查看yum配置文件 2.创建一个文件夹 用于挂载光盘 这里创建到/media下 取名叫cdrom mkdir /media/cdrom ...
- PAT甲级 1128. N Queens Puzzle (20)
1128. N Queens Puzzle (20) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The & ...
- jvm虚拟机---执行引擎子系统
Java虚拟机只与Class文件相关联,它规定了Class文件应该具有的格式,而不论该文件是由什么语言编写并编译而来.所以,任何语言只要能够最终编译成符合Java虚拟机要求的Class文件,就可以运行 ...
- bootstrap1.2
<html> <head> <meta charset="UTF-8"> <title></title> ...
- ORM操作mysql
创建表和添加数据 import sqlalchemyfrom sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import ...
- [smarty] smarty 模板文件中进行字符串与变量的拼接
// smarty 模板引擎 $arr_tribeLabelList["`$tribe_id`_"]
- list列表常用操作
1.创建列表.只要把逗号分隔的不同的数据项使用方括号括起来即可 List = ['wade','james','bosh','haslem'] 2.使用 range() 创建数字列表 numbers ...
- jquery基于form-data文件上传
1.html代码 <input type="file" name="myupdate" id="myupdate"> 2.jav ...
- Windows的cmd窗口显示utf8字符
用XeLaTeX的时候,查字体需要用fc-list命令,XeLaTeX用的都是utf编码,所以fc-list输出的字体信息也是utf编码.因此需要把cmd窗口也改成utf8编码才能看到这些字体信息.U ...
- AngularJS指令封装高德地图组件
1 概述 公司移动门户原来是基于AngularJS指令封装的百度地图组件,用于签到.签退.定位等功能,在使用过程中发现百度地图频繁的弹出广告,所以打算重新引用其它地图组件,最后决定基于AngularJ ...