Docker 入门

Docker 简介

环境配置难题

软件开发最大的麻烦事之一,就是环境配置。

环境配置如此麻烦,换一台机器,就要重来一次,旷日费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。

虚拟机

虚拟机(Virtual machine)就是带环境安装的一种解决方案

缺点

  • 资源占用多

    虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有 1MB,虚拟机依然需要几百 MB 的内存才能运行。

  • 冗余步骤多

    虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。

  • 启动慢

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

Linux 容器

由于虚拟机存在的缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。

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

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

  • 启动快

启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。

  • 资源占用少

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

  • 体积小

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

Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源,属于 Linux 容器的一种封装,提供简单易用的容器使用接口。

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

Docker 核心

Docker 的核心是标准化。

首先,标准化要有标准化的文档规范,要定义系统软件版本等一系列内容。

为了避免长期维护的时候文档内容过时,docker 给出的答案是:用 dockerfile,dockfile 就是你的文档,并且用来产生镜像。要改变 docker 镜像中的环境,只需要修改 dockerfile,然后重新构建镜像即可,这样就能保证文档和实际环境的一致性。

其次,标准化要有对应用统一操作的方法

docker 只提供 docker start 或 run 作为统一标准,一个容器内只给启动一个进程。

第三,为了维护生产环境的一致性和配置变更的幂等,docker 创造性的使用了类似 git 管理代码的方式对环境镜像进行管理。

文章

Last updated

Was this helpful?