了解【Docker】从这里开始

了解【Docker】从这里开始

# 一、环境配置的难题

软件开发最大的难题之一就是环境配置的问题。现在用户环境纷乱复杂,并且由于开源社区的进一步推广和许多开源项目不停地迭代更新,项目可能会有越来越多的依赖以及越来越难管理的依赖版本,如何保证编写的程序能不只是在“我的电脑上能运行”(It works on my machine)成了一个复杂麻烦的事情。

于是就有人提出:能不能从根本上解决问题,让软件可以自带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。

虚拟机

虚拟机(virtual machine)就是一种自带环境安装的解决方案。它可以在一个操作系统里面运行另一个操作系统,比如在 Windows 系统里运行一个 Linux 的操作系统。

应用程序对虚拟机是毫无感知的,因为虚拟机看上去跟真实的操作系统一模一样,而且对于底层的系统来说,虚拟机就是一个普通文件,不需要了就删除,对其他部分毫无影响。

虽然用户可以通过虚拟机还原软件的原始环境。但是,该方案有以下的几个缺点:

1. 资源占用多

虚拟机会独占一部分本属于操作系统的内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕你想在虚拟机里面使用的应用程序它实际只会占用 1MB 的内存,虚拟机仍然需要几百 MB 的内存才能运行。

2. 冗余步骤多

虚拟机是完整的操作系统,一些系统层面上的操作步骤,往往无法调过,比如用户登录。

3. 启动慢

启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,才能让应用程序真正的运行起来。

Linux 容器

由于虚拟机存在上述的这些缺点,Linux 提出了另一种虚拟机化技术:Linux 容器(Linux Containers,缩写 LXC)。

Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

由于容器是进程级别的,相比虚拟机有很多优势。

1. 启动快

容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。

2. 资源占用少

容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。

3. 体积小

容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。

总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。

# 二、什么是 Docker?

Enterprise Container Platform for High-Velocity Innovation
Securely build, share and run any application, anywhere

译:
企业高速容器平台
在任何地方安全的建造、分享、运行你的应用程序

官方对 Docker 的定义是一个容器平台。简单来说,Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。开发人员可以利用 Docker 来消除协作编码时 “在我的电脑上可以正常工作” 的问题。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

为什么要使用 Docker?

Docker 是一个为开发者和运维者去开发、发布和在容器中运行应用的平台。使用 Linux 容器来部署应用程序被称为容器化。 容器不是新的概念,它的优势在于很容易发布一个应用。

了解【Docker】从这里开始

容器化变得非常的流行,因为容器化具有以下的优点:

灵活:即使最复杂的应用也能够被容器化。

轻量:容器最大化利用和分享主机的内核。

可互换:你可以即时部署更新和升级应用。

便捷:你可以在本地构建应用,并部署到容器云,并在任何地方运行。

可扩展:你可以增加和自动分发容器的个数。

可堆叠:您可以垂直堆叠服务并即时堆叠服务。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppxfy.html