容器技术 -Docker

Docker系列文章


Docker概述

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker主要解决的问题

  • 环境管理复杂 - 从各种OS到各种中间件到各种app, 一款产品能够成功作为开发者需要关心的东西太多,且难于管理,这个问题几乎在所有现代IT相关行业都需要面对。

  • 云计算时代的到来 - AWS的成功, 引导开发者将应用转移到 cloud 上, 解决了硬件管理的问题,然而中间件相关的问题依然存在 (所以openstack HEAT和 AWS cloudformation 都着力解决这个问题)。开发者思路变化提供了可能性。

  • 虚拟化手段的变化 - cloud 时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需使用的需求以及保证可用性和隔离性。然而无论是KVM还是Xen在 docker 看来,都在浪费资源,因为用户需要的是高效运行环境而非OS, GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速

  • LXC的移动性 - LXC在 linux 2.6 的 kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可迁移性,决定其构建出的环境难于迁移和标准化管理(相对于KVM之类image和snapshot的概念)。docker 就在这个问题上做出实质性的革新。这是docker最独特的地方。

Docker 的历史

  • 2010年,几个搞IT的年轻人,在美国成立了一个名为 DotCloud 公司;做一些PaaS的云计算服务!开发进行LXC有关的容器技术。他们将自己的容器化技术命名为Docker。
  • 由于使用的人太少,迫于生存压力,在2013年将Docker开源;之后一鸣惊人,逐渐成为了企业级容器的首选方案;
  • 2014年4月9日:docker 1.0发布;

为什么使用Docker

  • 轻巧,在基本没有额外否消耗;
  • 隔离,与主机空间,容器 - 容器之间相互隔离,互不影响;
  • 灵活,根据自己的需要自由构建镜像包;
  • 分布式分发,使用相同的镜像能够快速的生成多个实例,适用于分布式应用;
  • 等 。。。

Docker名词概念

  • 容器(container):容器是利用虚拟化技术在计算机上隔离出来的一个相对封闭的Linux运行时环境,在其上可以运行预先包含基本Linux(Unix)操作系统的镜像。也可以是自己构建的镜像。
  • 镜像(image): Docker镜像是一个模板,我们通过一个镜像来创建容器服务。镜像与容器的关系就类似于类和实例的关系或者说Windows系统镜像和Windows电脑的关系,同一个Windows镜像可以安装在许许多多的电脑上,这些电脑直接互不影响。
  • 仓库(Repository): Docker仓库是集中存放并分发镜像的地方~!这个仓库可以是官方创建的,也可以是根据自己的需要创建自己的私有仓库

Docker 信息图

image-20210623224335751

使用 Hugo 构建
主题 StackJimmy 设计