Linux安装Docker并运行Ubuntu系统

Linux安装Docker并运行Ubuntu系统

Docker是一种容器,什么叫容器?在软件开发中,我们经常碰到“这程序在我的电脑上明明没问题啊,怎么在客户的电脑上就有问题?”这是因为各个电脑的软件、硬件不一致。

有没有一种统一的、虚拟的软件硬件平台,在上面开发好软件后发给客户,客户就可以直接在这个平台上运行程序?有的,这就是容器。容器有很多种,Docker是其中比较好的。
跟VMware相比,Docker是一个轻量级的软件,运行速度快。

使用Docker前,需要了解2个概念:Image和container,即镜像、容器。镜像就是一个环境包,这个环境包可以移动到任意的Docker平台里运行。而容器就是镜像的实例,一个镜像可以启动多个容器。
简单地类比,映像就像一个Word软件,这是厂家发布的,你无法修改;容器就是你启动Word软件,可以启动多个Word软件,在每一个Word软件里编写不同的文档。

Docker的核心是“统一文件系统”(union file system),什么意思?
假设你有2个目录:lower和upper,它们可以合并成一个新目录merged,内容如下:
在这里插入图片描述
合并的原则是什么?upper目录优先级更高,可以覆盖lower目录,lower目录是只读的,upper目录是可读可写的。这个规则可以解析得更具体:

① 文件名及目录不相同,则 lower 及 upper 目录中的文件及目录按原结构都融入到 merged 目录中;

② 文件名相同,只显示 upper 层的文件:
如上图在 lower 和 upper 目录下及下层目录 dir_A 下都有 same.txt 文件,但在合并到 merged 目录时,则只显示 upper 的,而 lower 的隐藏。

③ 目录名相同, 对目录进行合并成一个目录:
如上图在 lower 及 upper 目录下都有 dir_A 目录,将目录及目录下的所有文件合并到 merged 的 dir_A 目录,目录内如有文件名相同,则同样只显示 upper 的,如上图中 dir_A 目录下的same.txt文件。

读文件时,upper目录中有该文件时就从upper目录读取;否则去lower目录读取。
新建、修改、删除文件时,只会影响到upper目录,lower目录是只读的不受影响。
在Docker中,镜像提供lower层的只读文件;容器提供upper层的可读可写文件,如下:
在这里插入图片描述
当我们启动一个容器时,就是在镜像提供的lower文件系统的基础上,创建一个可读可写的upper层文件系统。
我们可以启动多个容器,就是创建多个upper层文件系统,这些容器的upper层文件系统互不影响。

我们提供了镜像文件,里面安装好了各种软件;你需要做的是下载镜像、启动容器,在容器里下载你的程序、编译它们。

参考文章:Linux overlay文件系统解析
全文下载:嵌入式Linux系统开发完全手册 第二版

猜你喜欢

转载自blog.csdn.net/thisway_diy/article/details/107137742