什么是Docker?

下面是Docker容器的Logo,大家可以从这个logo也能道出容器的大致概念了。

其实Docker的概念来自于集装箱,集装箱解决的问题就是把所有不规整的货物都用标准化大小的箱子存放起来,这样子不同尺寸不同大小的货物都能装到这些集装箱里面,方便封装和运输。集装箱与集装箱之间不会互相影响,我们可以用统一标准的集装箱来运送海鲜产品,运送木柴,运送钢铁……等等。

Docker就是这个集装箱,而运输集装箱的这个鲸鱼或者大货轮就是操作系统(Operating System),集装箱里面装有我们各种“奇形怪状”的需要交付的应用程序。它们可能是一款电商的网站,或者是一个交友类收集app。

那么Docker有什么特点呢?为什么这么多企业热衷于使用Docker?

  • Docker可以缩短开发、测试或部署应用程序的时间;你可以在几秒内创建一个新的应用,或者在几秒内重启一个实例。
  • Docker内可以建立标准化的容器(Container),其中容器包含了
  • 应用程序代码
  • 配置
  • 环境依赖关系
  • Docker很可靠,你不需要担心你的测试代码在部署到生产环境的时候出问题,不需要害怕因为Mysql,php的版本问题导致代码无法运行。因为Docker使用集装箱(容器),你的集装箱无论放到哪一条货轮上都可以很稳妥得放置并运输。

虚拟化和容器的区别

既然虚拟化已经在市面上流行了这么多年了,为什么容器现在更加流行了呢?

究其原因,让我们先来看看它们之间的一些区别吧。

如下图所示,使用传统的虚拟化技术,我们需要:

  • 底层的基础架构(服务器,云主机,个人电脑等)
  • 宿主机操作系统(也可没有此层)
  • 虚拟机管理系统(Hypervisor),例如Xen,Hyper-V,KVM等,或者VirtualBox和VMWare Workstation
  • Hypervisor上可以安装我们的客户机操作系统
  • 客户机操作系统之上会有我们不同的依赖环境和应用程序

总体来说,这样的架构很臃肿,导致每一层都有资源的开销。最终导致我们在一台物理机上能开启的虚拟机的数量有限。

相比来说,Docker就显得更加轻量化了。它的架构是:

  • 底层的基础架构(服务器,云主机,个人电脑等)
  • 操作系统,可以是所有主流的Linux发行版本
  • Docker引擎(守护进程),负责管理Docker容器
  • 各种依赖和应用程序

Docker引擎是可以和主操作系统直接进行通信的,因此相对于虚拟机启动的数分钟,Docker的启动可以在数毫秒内完成。

再举个通俗一点的例子,在上面的篇幅有介绍到Docker类似码头的集装箱,每一个集装箱都是标准化的,里面装了各种各样的货物。而虚拟化对比来说,就是码头上的不同仓库,仓库里面堆放了各种货物,同时还有电力系统,水力系统,工作区间等等标准的一套装置。

因此,运维和管理一个仓库会花费很多人力和物力,它们相当于是完全独立运作的实体;而Docker则是一个一个独立的集装箱,只能装上货轮才能发挥工作。但它们没有太多的人力和物力开销。

Docker的优点

  • 终于可以摆脱程序依赖带来的噩梦了,每个程序和依赖环境都在一个容器中,都能打包迁移
  • 开发>测试>QA>环境的流程更加顺畅
  • 应用程序的隔离,每个容器中的问题不会影响另一个容器
  • 更好的代码迁移可能性
  • 微服务,可以将原本一个应用程序细分成多个微型的服务,每个服务运行在一个Docker容器中

容器的组件

  • Docker镜像(Image):指将应用打包好后的存储方式,类似操作系统的IOS或IMG文件
  • Docker容器(Container):一个个正在运行的镜像
  • DockerFile:构建一个镜像的描述文件
  • Layers/Union File System:在Docker File中每一步都会产生一层Layer,当我们修改一个镜像的时候,就构建了一个新的层
  • Docker Daemon/Engine:是Docker的守护进程,Docker Client通过命令行与Docker Damon通信,完成Docker相关操作
  • Docker Registries/Docker Hub:托管Docker镜像的地方,当我们构建完一个镜像之后,我们可以将镜像推送到像Docker Hub这样的公共仓库或者自己的私有仓库中
  • 容器调度平台:典型产品是Mesos和Kubernetes(K8S),为容器化应用提供了资源调试、部署、服务发现、扩展机制等功能

动力节点的Docker入门教程,将带你一步一步从基础到实践学习Docker,了解什么是Docker,Docker的核心思想、核心组件诸如镜像,仓库,容器等,通过大量的实际操作循序渐进地介绍Docker,带你轻松玩转Docker,Docker技术也是当今IT从业人员的必备技能之一。

Docker在线学习:https://www.bilibili.com/video/BV1QA411L7B5

Docker资料下载:http://www.bjpowernode.com/?csdn

动力节点Docker学习教程,一文带你快速了解docker容器相关推荐

  1. 零基础学Docker【3】 | 一文带你快速进行Docker实战

    前言 本篇是零基础学Docker系列的第三篇文章,在上一篇文章

  2. 【STM32】标准库与HAL库对照学习教程六--位带操作

    [STM32]标准库与HAL库对照学习教程六--位带操作 一.前言 二.准备工作 三.位带介绍 1.位带操作 2.STM32位带及位带别名区域 四.位带区与位带别名区地址转换 五.GPIO的位带操作 ...

  3. Docker学习之路05:五分钟用docker compose搭建一个自己的个人博客网站!

    五分钟用docker compose搭建一个自己的个人博客网站! Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学 ...

  4. 动力节点——Java学习路线图

    史上最全最细Java学习路线图-动力节点官方出品 2019年最新Java学习路线图, 路线图的宗旨就是分享,专业,便利,让喜爱Java的人,都能平等的学习.从今天起不要再找借口,不要再说想学Java却 ...

  5. Docker学习教程

    我的环境:win10 文章目录 入门教程推荐 视频教程 文本教程 安装 配置镜像加速器 获取阿里镜像加速器 配置加速器 Kitematic 可视化管理 Docker 项目使用Docker pom.xm ...

  6. SpringBoot笔记汇总【动力节点SpringBoot全套教程完整版】

    前言 动力节点的springboot笔记汇总,公开免费. Spring Boot教程 学习地址 动力节点springboot视频教程-专为springboot初学者打造的教程_哔哩哔哩_bilibil ...

  7. 非常详细的Docker学习教程

    一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...

  8. Docker学习教程(非常详细)

    转自:https://blog.csdn.net/zmx729618/article/details/72930474 一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器 ...

  9. 带你快速了解 Docker 和 Kubernetes

    作者:honghaohu,腾讯 PCG 后台开发工程师 从单机容器化技术 Docker 到分布式容器化架构方案 Kubernetes,当今容器化技术发展盛行.本文面向小白读者,旨在快速带领读者了解 D ...

最新文章

  1. java泛型的实现和原理_java 泛型实现原理
  2. 到底什么是生成式对抗网络GAN?
  3. 镗孔指令g76格式_11种孔加工固定循环指令+1个案例=完美解决孔加工问题
  4. C# 实现ADSL自动断网和拨号(适用于拨号用户)
  5. 【OS学习笔记】十二 现代处理器的结构和特点
  6. 重庆市大学生程序设计比赛相关情况
  7. AAAI 2021中的目标检测(详细版with code)
  8. 请教一些关于EF+oracle的问题
  9. bzoj 3377: [Usaco2004 Open]The Cow Lineup 奶牛序列
  10. cocos2dx 开发成长之路 004
  11. LU分解法求解方程组(C语言)
  12. 计算机专业学生的学期规划,大学生大一下学期规划
  13. Region Proposal by Guided Anchoring论文解读
  14. 处理ThinkPad X12018按电源键无法开机的问题
  15. flutter项目引入iconfont【阿里巴巴图标】的图标
  16. 瑞典计算机最好的大学排名,瑞典前十大学一览表
  17. 中国白领最苦累的六大城市
  18. 苹果系统手机调用java线程出错_在多线程Java应用程序中调用已编译的m-file(.jar)时出错...
  19. PTA 旅游规划(邻接表) 思路分析及代码解析
  20. win11系统防火墙怎么关闭

热门文章

  1. 《Adobe Illustrator CS5中文版经典教程》—第0课0.16节 使用符号
  2. 全国多地商品房网签采用电子签章,君子签助推房产交易驶入数字化“快车道”
  3. docker geovis_GitHub - ThinkBlue1991/cronjob-operator
  4. PickerView 时间/城市联动选择器TimePickerBuilder+OptionsPickerBuilder
  5. 【Day40】php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
  6. 什么是微服务?分布式和集群又是什么?
  7. 弘辽科技:淘宝店铺补流量访客对排名有影响吗?如何操作?
  8. class7-字幕提取
  9. python xml etree_Python XML No module named etree.ElementTree
  10. 宝塔Linux面板BT-Panel Linux自动磁盘挂载工具1.8