一、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. MapGIS计算瓦片数据集

    https://www.docin.com/p-2103834433.html

  2. day18(javaEE三大组件之一servlet(简介(一)))

    Servlet servlet是小型服务器语言,使用它可以处理前台传递来的信息,servlet进行处理后在响应给前台,其中servlet起到了关键性的作用.前端输入的信息可以持久化的存储在数据库中,并 ...

  3. Shell编程-10-Shell中的数组

    目录 数组基础 数组示例 数组总结     如果大家有其他语言的基础或经验,就很快能明白数组了.简单来说,数组就某一种相同类型的元素组合,而后通过下标对其进行访问各元素. 数组基础 基础语法 第一种形 ...

  4. vc6中向vs2010迁移的几个问题

    vc6版本支持的库编译:CJ60lib 1. 用vs2010打开CJ60库的源码的dsw,强制打开 (1)设置项目属性的语言 因为,如果代码字符的编码集不一样,则会出现函数冲定义,参数冲突等问题,这可 ...

  5. shell工具-sed

    sed sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这 ...

  6. jQuery插件初级练习2

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

  7. linux查看RAID信息

    linux查看RAID信息 发表于2013 年 12 月 22 日 RAID分为软RAID和硬RAID 软RAID查看 cat /proc/mdstat 硬RAID查看 在启动画面进raid卡查看 I ...

  8. Android-Java-面向对象的代码例子

    需求一:用手机打电话,发短信,看视频,听音乐,用面向对象思想实现: package android.java.oop01; /** * 1.既然是面向/面对 --> 对象 就要把 (用手机打电话 ...

  9. [leetcode 120]triangle 空间O(n)算法

    1 题目 Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjac ...

  10. MySQL5.7Gtid主从复制总是遇到日志被清等出现无法正常主从复制

    最近最是在MySQL5.7上的的gtid主从复制问题总是遇上下面问题: Last_Error: Coordinator stopped because there were error(s) in t ...