Docker教程(一) Docker入门教程

本文链接:https://blog.csdn.net/yuan_xw/article/details/51935278

Docker教程() Docker入门教程

Docker入门教程

1.1 集装箱是什么

在了解Docker之前,我们先了解一下集装箱这个概念。

集装箱,英文名container.集装箱的出现,大大降低了货物运输的成本,实现了货物运输的标准化,以此为基础逐步建立全球范围内的船舶、港口、航线、公路、中转站、桥梁、隧道、多式联运相配套的物流系统,世界经济形态因此而改变。集装箱最大的成功在于其产品的标准化以及由此建立的一整套运输体系。

1.2 Docker是什么

Docker,直译是码头工人。这个码头工人搬运的是集装箱(Container)

Docker通过Linux Container技术将任意类型的应用进行包装,变成一种标准化的,可移植的,自管理的组件。因为这种对应用的包装不仅包装了应用程序本身,更将应用的依赖和环境一并进行打包,所以她允许我们可以将这个包拿到任意环境去运行,提高效率的同时,不再有兼容性的问题。

如同集装箱代表了以集装箱为核心的现代航运体系一样,docker代表了以容器技术为核心的一套标准化体系。

Docker是以容器技术为核心的包含构建、运行与交付的整套IT体系。

1.3 Docker项目的目标

Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux容器(LXC)等技术。在 LXC 的基础上 Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker的容器就像操作一个快速轻量级的虚拟机一样简单。

1.4 Docker对比传统虚拟机优势

对比传统虚拟机表

特性

容器

虚拟机

启动

秒级

分钟级

硬盘使用

一般为MB

一般为GB

性能

接近原生

弱于

系统支持量

单机支持上千个容器

一般几十个

1.5 Docker基本概念

1、Docker客户端/守护进程:

    Docker的客户端向服务器发送请求,Docker处理完请求返回结果。

2、Docker Image镜像:

-  Docker镜像是一个叠的只读文件系统,最底端是bootfs引导文件系统。Docker容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载。

-  rootfs(Ubuntu)Root文件系统,Root文件系统可以是一种或者多种的操作系统,Root文件系统只能是只读状态。

-  联合加载:联合加载是指一次加载多个文件系统,会将各层的文件加载叠加到一起,最终的文件系统,会包含所有文件系统及目录,Docker将这样的文件系统称为镜像。一个镜像可以放到另一个镜像的底部,下面的镜像称为父镜像,依次类推直到镜像的最底部,最底部的镜像称为基础镜像。

-   

3、Docker Container容器:

-   Docker利用容器来运行应用,容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

-  Docker在运行中会在最顶层创建一个可写层,我们运行的程序会可写层进行。一开始启动容器时,可写层是空的,当文件系统发生变化时,这些变化都会应用到这一层上。如:当修改一个文件时,这个文件会从该层下面的只读层复制到该读写层,该文件的只读版本依然存在,但是已经被读写层的该文件幅本所隐藏,即:写时复制。

-  每个只读镜像层都是只读的,并且以后永远不会变化,当创建一个新容器时,Docker会创建一个镜像栈(见下图),在栈的最顶层添加可写层,读写层加上下面的镜像层及配置数据,就组成了容器。

4、Docker Registry仓库:使用仓库保存所需要的镜像,仓库分两种:公有和私有。

-  公有:最大的公开仓库是 DockerHub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 DockerPool等,可以提供大陆用户更稳定快速的访问。

-  私有:用户架设私有仓库:当用户创建了自己的镜像之后就可以使用 push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull下来就可以了。

-  *注:Docker仓库的概念跟 Git类似,注册服务器可以理解为 GitHub这样的托管服务。

-  

1.6 Docker依赖Linux内核特性

1、Namespaces命名空间:命名空间提供了系统资源的隔离,如:进程、网络、文件系统…。实际Linux实现命名空间主要目的之一,就是为了实现轻量级虚拟化服务(容器)。在同一个命名空间下的进程可以感知彼此的变化,而对其它命令空间下的进程一无所知。

-  PID(ProcessID):进程隔离。

-  NET(Network):管理网络接口。

-  IPC(InterProcessCommunication)管理跨进程通信的访问。

-  MNT(Mount):管理挂载点。

-  UTS(UnixTimesharing System)隔离内核和版本标识。

2、Controlgroups(cgroups)控制组:是一种可以限制、记录、隔离使用线程资源的机制,最初是由google工程师提出,并且在2007年更新Linux kernel 2.6.24版本。

-  资原限制:如外面的子系统可以为进程组,设置一个内存使用的上限,一旦使用的内存超过了上限,再申内存就会发生OutMemoryError

-  优先级设定:可以设定哪些进程可以使用更大的CPU、磁盘IO的资源。

-  资源计量:可以计算哪些进程组使用了多少系统资源。

-  资源控制:可以将进组进行挂起和恢复。

3、Docker容器的能力:

-  文件系统隔离:每个容器都有自己的root文件系统。

-  进程隔离:每个容器都运行在自己的进程环境中。

-  网络隔离:容器间的虚拟网络接口和IP地址都是分开。

-  资源隔离和分组:使用cgroupsCPU和内存之类的资源独立分配给每个Docker容器。

1.7 学习Docker推荐书籍:

1. Docker从入门到精通》

2. Docker进阶与实战》

3. Docker容器与容器云》

4. Docker源码分析》

5. Docker开发实践》

6. Docker生产环境实践指南》

--以上为《Docker教程(一) Docker入门教程》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

——厚积薄发(yuanxw)

Docker教程(一) Docker入门教程相关推荐

  1. WMI 使用教程_.NET 入门教程

    WMI 使用教程_.NET 入门教程 先介绍一下WMI 相关知识:  什么是WMI 呢? Windows 管理规范 (Windows Management Instrumentation ),它的主要 ...

  2. AFNnetworking快速教程,官方入门教程译

    AFNnetworking快速教程,官方入门教程译 分类: IOS2013-12-15 20:29 12489人阅读 评论(5) 收藏 举报 afnetworkingjsonios入门教程快速教程 A ...

  3. Redis教程(一) Redis入门教程

    Redis教程(一) Redis入门教程 1 Redis入门教程 Redis是一个 Key-Value存储系统.和 Memcached类似,它支持存储的 value类型相对更多,包括 string(字 ...

  4. Kafka教程(一)Kafka入门教程

    Kafka教程(一)Kafka入门教程 1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件 ...

  5. Nginx教程(一) Nginx入门教程

    Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由 ...

  6. ubuntu安装、使用docker超级详细的入门教程

    docker安装 查看官网(https://docs.docker.com/get-docker),根据系统版本安装. 删除老版本 sudo apt-get remove docker docker- ...

  7. Docker 快速上手学习入门教程

    原文链接:http://tabalt.net/blog/docker... Docker是一个使用Golang开发的开源应用容器引擎,让开发者可以打包应用和依赖到一个轻量级.可移植的镜像中,然后分发到 ...

  8. Docker版iServer新手入门教程

    文章目录 一.安装 Docker 1.在公网环境中安装 Docker 1.1 在 Windows 上安装 Docker Desktop 1.2 在 Linux 上安装 Docker 2.离线安装 Do ...

  9. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  10. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

最新文章

  1. es6学习笔记2-—symbol、变量与作用域
  2. linux 删除文件夹
  3. c#编译器对byte类型的一些规则 (转)
  4. c语言小学生加法考试题程序4,c语言编程题及答案.doc
  5. 20165320 第二周学习总结
  6. sql数据库的基本操作
  7. bigint在java中用什么表示_为什么说开车最能看出一个人的人品和情商?这几条说的太精辟了...
  8. 堆栈溢出回答了我们不知道的Java首要问题
  9. GNOME如何使用Git
  10. complete_code_Chapter1
  11. Acrobat XI 安装教程方法!
  12. php项目过段时间就崩溃,apache 运行一段时间出现错误
  13. JavaScript完成知乎页面
  14. JS语法之:require
  15. 在普通maven项目应用中使用MQ
  16. 【02信息系统项目管理基础】【背诵版】
  17. 使用python连接clickhouse并发送邮件
  18. ui平面设计好学吗?ui设计哪些工具是需要掌握的?
  19. python学习第一课
  20. 深入理解MDL元数据锁

热门文章

  1. jQuery .tmpl() 用法
  2. 自适应网页设计/响应式Web设计 (Responsive Web Design)
  3. 你应该知道的一些事情——CSS权重
  4. 利用 Cache_Lite代替codeigniter中的cache功能
  5. 通过docker build --build-arg 传值进 Dockerfile 动态构建容器
  6. linux找到占用空间比较大的文件夹并按大小排序输出
  7. Ethercat解析(十)之从站配置
  8. 2016校招真题编程练习——微信红包(腾讯)
  9. 【AI视野·今日CV 计算机视觉论文速览 第197期】Thu, 13 May 2021
  10. 【今日CS 视觉论文速览】 27 Dec 2018