这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
需要解决的问题
在软件开发已经已经远不仅仅是编写代码的今天,Docker 越来越成为开发者需要掌握的技能之一。Docker 是一个开源的应用容器引擎,它可以方便地解决软件开发过程中很多棘手的问题。
以环境配置为例,当我们将软件迁移到一个新的环境中运行的时候,需要确保系统的设置、依赖软件的安装和版本、环境变量等众多因素与之前的环境保持一致,并且他们之间的兼容性也有保障。并且,这些工作没切换一次环境就需要执行一次。
除此之外,还有一些类似的问题,比如在软件开发过程中,经常需要一个可以用来实验或者测试的独立沙盒环境,或者运行各种中间件的不同版本,甚至在一台开发电脑上模拟一个集群环境。
虚拟机和容器
针对这些问题,有两种常用的解决方案,就是虚拟机和容器。
虚拟机是较早出现的技术,从它的名字很容易看得出,它是一种在一个操作系统中模拟出另外一台(或多台)电脑的技术,一个虚拟机就是一个文件,它可以被创建、复制、删除。以上特性使得它可以很方便地被用来创建一致的运行环境,方便软件环境的配置;或者创建一个独立沙盒环境,用完删除,不影响宿主系统;也可以方便地模拟一个集群架构。
但是,它的缺点也很明显,用一台电脑的硬件支撑「多台电脑」运行,分给没台虚拟机的硬件性能就很有限了,而且,虚拟机的关闭和启动也是一个小号时间和性能的操作。
此时,容器的优势就体现出来了。
容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟的是操作系统而不是硬件。容器更便携,更高效。
容器是应用层的抽象,将软件和它的运行环境打包在一起。一台机器上可以运行多个容器,他们共享操作系统的内核,每个容器作为用户空间中的独立进程运行。一个容器通常只有几十 MB 大小。
虚拟机 是物理硬件的抽象。在虚拟机管理软件可以创建多台虚拟机运行在一个机器上。每个虚拟机都包含了完整的操作系统、运行环境、软件等。一个虚拟机文件通常有十几甚至几十 GB 大小。
虚拟机 (VM) 是将一台服务器变成多台服务器的物理硬件的抽象。管理程序允许多个 VM 在一台机器上运行。每个 VM 都包含操作系统、应用程序、必要的二进制文件和库的完整副本 - 占用数十 GB。VM 的启动速度也可能很慢。
Docker 是对 Linux 容器进行了封装,并对外提供了简单的接口,是最流行的容器技术。
Docker 的安装
Docker 的安装可以参考官方的文档:docs.docker.com/engine/inst… 。
根据自己使用的操作系统,按照官方文档的步骤动手安装 Docker,并运行一个简单的容器测试安装是否成功,可以让你对 Docker 有一个初步的了解。如果想从现在开始学习使用 Docker,推荐你务必自己动手。