特别声明:

  博文主要是学习过程中的知识整理,以便之后的查阅回顾。部分内容来源于网络(如有摘录未标注请指出)。内容如有差错,也欢迎指正!

=============系列文章=============

1. Docker学习(一): 基本概念

2. Docker学习(二): 镜像的使用与构建

3. Docker学习(三): Dockerfile指令介绍

4. Docker学习(四): 操作容器

=================================

Docker简介(容器化技术)

  Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔 离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻 便、快捷。

  Docker与传统虚拟化方式的不同之处:传统虚拟技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在改操作系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。对比图:

传统方式:

Docker:

  使用Docker的优势:

    1. 更高效的利用系统资源:不需要硬件虚拟以及运行完整操作系统等额外开销

    2. 更快速的启动时间:直接运行于宿主内核,无需启动完整的操作系统

    3. 一致的运行环境:Docker镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性

    4. 持续交付和部署

    5. 更轻松的迁移

    6. 更轻松的维护和扩展:使用分层存储以及镜像技术,应用重复部分的复用更容易

  对比总结:

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为MB 一般为GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

Docker的基本概念

  一、镜像(Image): 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

  分层存储:Docker设计时,就充分利用Union FS技术,将其设计为分层存储的架构。严格来说,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。

  镜像构建:一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

 

  二、容器(Container):容器可以理解为镜像的实例(如类和实例的关系),镜像是静态的定义,容器是镜像运行时的实体。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID空间。

  容器运行以镜像为基础层,在其上创建一个当前容器的存储层,这个为容器运行时读写而准备的存储层可以称为容器存储层。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。

  Docker最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。文件的写入操作需要使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器的存储层,直接对宿主发生读写。

  三、仓库(Repository):集中存储、分发镜像的服务。一个Docker Repository中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);在仓库中每个标签对应一个镜像。<仓库名>:<标签>的格式来执行具体的镜像,若不给出标签,将以latest作为默认标签。

  Registry公开服务默认是官方Docker Hub

Docker在各个系统上的安装

  百度..............

Docker加速镜像配置

  申请加速器:Docker官方提供的中registry mirror、阿里云加速器、DaoCloud加速器

  upstart系统:

    1. /编辑 /etc/default/docker文件,DOCKER_OPTS中添加 --registry-mirror=<加速器地址>

    2. sudo service docker restart

  systemd系统:

    1. 启动服务后,编辑/etc/systemd/system/multi-user.target.wants/docker.service文件,ExecStart=这行最后添加极速器地址 --registry-mirror=<加速器地址>

    2. sudo systemctl deamon-reload, sudo systemctl restart docker

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

参考:《docker_practice》

Docker学习(一): 基本概念的更多相关文章

  1. Docker学习之基本概念

    Docker学习之基本概念 作为一个后端noder,不了解docker有点说不过去,这节开始,学习一些docker层面的东西. 什么是docker Docker最初是dotCloud公司创始人Solo ...

  2. docker学习(1)--基础概念

    转载请注明源文章出处:http://www.cnblogs.com/lighten/p/6841677.html 1.前言 docker的官网:这里.下一段摘自官网描述. docker是世界领先的软件 ...

  3. Docker学习1-基本概念

    Docker Docker的基本概念 Docker是为开发人员和系统管理员而设计的以容器的形式开发.部署和运行应用程序的平台.使用Linux容器去部署应用程序称为容器化,利用容器部署应用程序方便简单. ...

  4. Docker学习笔记一 概念、安装、镜像加速

    本文地址:https://www.cnblogs.com/veinyin/p/10406378.html  Docker 是一个容器,可以想象成一个轻便的虚拟机,但不虚拟硬件和操作系统. 优点:启动快 ...

  5. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  6. 优秀的云计算工程师需要学什么?云计算Docker学习路线

    云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...

  7. Docker 学习新手笔记:从入门到放弃

    本文记录的是作为一个新手,从了解 Docker 是什么.Docker 技术包含哪些概念到上手使用.安装以及发布 Docker 镜像的整个过程.作者在学习过程中参阅了诸多文档和教程,在此一并感谢,与此同 ...

  8. Docker概念学习系列之详谈Docker 的核心组件与概念(5)

    不多说,直接上干货!   见[博主]撰写的https://mp.weixin.qq.com/s/0omuSAjF5afJBZBxhbKTqQ 想要了解Docker,就必须了解Docker的五大核心概念 ...

  9. Docker学习之——Node.js+MongoDB+Nginx环境搭建(一)

    最近在学习Node.js相关知识,在环境搭建上耗费了不少功夫,故此把这个过程写下来同大家分享一下,今天我先来介绍一下Docker,有很多人都写过相关知识,还有一些教程,在此我只想写一下,我的学习过程中 ...

随机推荐

  1. SQL语句优化 (一) (52)

    优化SQL语句的一般步骤 1 通过show status命令了解各种SQL的执行频率. 格式:mysql> show [session|global]status; 其中:session(默认) ...

  2. day05.2-一个文件的增删改查实例

    一. 测试程序   #INFO.txt源文件内容 global log 127.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defa ...

  3. java中继承的关系

    当有父子关系的两个类(继承关系),当子类实例化对象的时候  会默认调用父类的无参构造方法,如果有  super()的话,调用的是父类有参的构造方法! 也就是说 父类必须有 有参构造 没有的话super ...

  4. jquery源码解析:val方法和valHooks对象详解

    这一课,我们将讲解val方法,以及对value属性的兼容性处理,jQuery中通过valHooks对象来处理. 首先,我们先来看下val方法的使用: $("#input1").va ...

  5. mxonline实战5,用户注册的验证码

        github对应地址:验证码好麻烦     一. 安装 配置 1. pip install django-simple-captcha 2. add captcha to the INSTAL ...

  6. 爬虫7:selenium

    1. 一个简单的使用例子 from selenium import webdriver from selenium.webdriver.common.by import By from seleniu ...

  7. jmeter结果分析(图形报表和聚合报告)

    采用Jmeter测试工具对web系统作的负载测试,得出的响应报表,数据比较难懂,现作一具体说明.以下是在一次具体负载测试中得出的具体数值,测试线程设置情况为:线程数:200,等待时间(ramp-up) ...

  8. 学习前端页面css定位

    css元素框定位 一.相对定位: 相对定位是一个非常容易掌握的概念.如果对一个元素进行相对定位,它将出现在它所在的位置上.然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动.pos ...

  9. leetcode-91-解码方法(动态规划和递归两种解法)

    题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...

  10. 2016级算法期末上机-D.简单·AlvinZH's Fight with DDLs I

    1117 AlvinZH's Fight with DDLs I 思路 简单题,动态规划. 本题与期末练习赛B题很相似,而且更为简单些.简化问题:在数字序列上取数,不能取相邻的数. DP数组定义,dp ...