一、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(一)的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在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 ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. Java数据类型、操作符、表达式

    基本与C#相同,因C#从Java学的   如操作符     对象的Equals方法,比较两个对象的内容是否相等.     ==是比较是否引用同一对象.

  2. (转).net面试题(老赵)

    转自:http://www.cnblogs.com/chenxiaoran/archive/2012/05/27/2519988.html 1.什么是CLR 公共语言运行时(Comman langua ...

  3. (树)Subtrees -- hdu -- 5524

    http://acm.hdu.edu.cn/showproblem.php?pid=5524 Subtrees Time Limit: 2000/1000 MS (Java/Others)    Me ...

  4. 编写Shell脚本

    1.脚本的编写 Shell脚本本身是一个文本文件,这里编写一个简单的程序,在屏幕上显示一行helloworld! 脚本内容如下: #!/bin/bash #显示“Hello world!" ...

  5. jQuery插件初级练习4

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. [php-cookie] cookie 请求跨域,如何共享

    cookie 请求跨域的问题, 假设我有两个域名,一个 m.example.com,另一个是 www.example.com . 那么我需要如何设置 cookie 才可以在这两个域名都实现共享呢? / ...

  7. 使用PerfView监测.NET程序性能(二):Perfview的使用

    在上一篇博客中,我们了解了对Windows及应用程序进行性能分析的基础:Event Trace for Windows (ETW).现在来看看基于ETW的性能分析工具——Perfview.exe Pe ...

  8. Windows核心编程:第12章 纤程

    Github https://github.com/gongluck/Windows-Core-Program.git //第12章 纤程.cpp: 定义应用程序的入口点. // #include & ...

  9. 【C#】转一篇MSDN杂志文:ASP.NET Pipeline: Use Threads and Build Asynchronous Handlers in Your Server-Side Web Code

    序:这是一篇发表在2003年6月刊的MSDN Magazine的文章,现在已经不能在线阅读,只提供chm下载.讲的是异步请求处理那些事,正是我上一篇博文涉及的东西(BTW,事实上这篇杂志阐述了那么搞然 ...

  10. C# 用户选择单个压缩-系统自带压缩

    //用C#自带的压缩,最少要.net4.5或以上,先增加引用 System.IO.Compression.FileSystem // FolderBrowserDialog dlg = new Fol ...