Docker:学习笔记(1)——核心概念及Ubuntu安装
Docker:学习笔记(1)——核心概念及Ubuntu安装
Docker是什么
软件开发后,我们需要在测试电脑、客户电脑、服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力。为了解决这个问题,我们可以将软件及其依赖的环境打包在一个虚拟机中。但是虚拟机存在启动慢、占用资源多等问题。针对虚拟机的缺点,Linux发展出一种虚拟化技术——Linux容器,它不是模拟一个完整的操作系统,而是进程级别的,可以对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
Docker是对Linux容器的一种封装,提供简单易用的容器接口。它将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
Docker核心概念
镜像Image
Docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。镜像是创建Docker容器的基础。通过版本管理和增量的文件系统,Docker提供一个一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并通过简单的命令就可以直接使用。
例如,一个镜像可以只包含一个完整的Ubuntu操作系统环境,可以把它称为一个Ubuntu镜像。镜像也可以安装Apache应用程序,可以把它称为一个Apache镜像。
容器Container
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用程序实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。
我们可以将容器看做一个简易版的Linux系统环境(这包含Root用户权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序打包而成的应用盒子。
镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。
仓库Repository
Docker Registry提供集中存储和分发镜像的服务。Docker Registry中可以包含多个Repository,每个仓库可以包含多个标签,每个标签对应一个镜像。
以ubuntu镜像为例,ubuntu是仓库名,其内包含不同的版本标签,如,16.04
, 18.04
。我们可以通过 ubuntu:16.04
,或者 ubuntu:18.04
来具体指定所需哪个版本的镜像。如果忽略了标签,比如 ubuntu
,那将视为 ubuntu:latest
。
目前,最大的仓库是Docker Hub,存放了数量庞大的镜像供用户下载。当然,Docker也支持用户在本地网络创建一个只能自己访问的私有仓库。
当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有或者私有仓库。这样用户下次在另外一台机器上使用该镜像时,只需将其从仓库上pull下来即可。
Docker的安装
Ubuntu安装
Ubuntn从14.04版本开始,官方软件源中已经自带了Docker包,可以直接安装。
安装完成后,执行docker --version来查看docker版本。
参考资料
- 《Docker技术入门与实践》