【Docker】关于Docker

首先

我之前只是随便用过Docker,但是我打算重新系统地学习一下,并将所学知识输出。

Docker是什么

Docker是一种能够隔离数据和程序的机制。在我们使用的计算机和服务器上,会同时运行多个程序。例如,在计算机上,我们可以同时启动并使用Excel和Word等软件,而在服务器上,Apache和MySQL等多个软件也会同时运行。Docker可以将这些多个数据和程序构建在独立的环境中。

Docker 引擎和容器

image.png

利用图像创建容器。

要创建容器,需要从被称为容器基础的镜像生成。镜像有各种各样的类型,如果想创建Apache容器,则需要Apache镜像,如果想创建MySQL容器,则需要MySQL镜像。可以创建多个容器,并且可以在Docker上安装任意数量的容器。

需要使用Linux操作系统!

image.png

在容器中共存多个服务器

如果使用Docker容器环境,可以完全隔离,可以将Web服务器和数据库服务器等分成不同的容器,并安全地运行。即使进行更新,由于它们被隔离,互相之间不会产生影响。
通常情况下,一台服务器只能安装一个Web服务器(如Apache),但使用容器可以创建和安装多个Web服务器。

如果不使用容器来将多个Web服务器共享,那么可能会发生项目成员触碰其他项目环境的风险。此外,由于Apache只能安装一个,因此会造成Web服务器功能的共用。通过使用容器,就可以在无需担心这些风险的情况下共享服务器。

搬运容器

容器可以通过导出再构建到另一个Docker上。简单来说,就是可以在不同的Docker之间迁移容器。
迁移的好处是可以通过分发容器给所有人来统一开发环境,并且可以直接将开发服务器上的内容搬到生产服务器上。
Docker不依赖操作系统,因此不会出现在开发环境可以运行但在生产环境中无法运行等问题。

Docker的工作原理

image.png

在Mac或Windows上使用Docker

Docker只能在Linux操作系统上运行,容器中的软件也只能安装Linux版本的。
因此,Docker是以Linux为基础的软件,所以在Mac和Windows系统上不应该运行。
但是,通过使用Docker Desktop for Mac或Docker Desktop for Windows,可以在Mac和Windows上使用Docker。

这些是为Mac和Windows设计的Docker,它们创建了一个不可见的虚拟Linux环境并在其中运行Docker。

这个软件可以通过双击来启动,但实际操作Docker需要通过命令行(CLI)进行操作。

音量的设置

卷是指将存储空间分隔开来的区域。例如,SSD等是被分隔的区域。
挂载是指连接并将目标对象置于操作系统和软件的控制之下的意思。

使用容器需要将数据放置在存储空间中,因此需要挂载存储空间。
容器即使停止也不会消失,但在容器的生命周期中,总有一天会被删除。在这种情况下,如果将数据放置在容器内,那么在容器删除时,数据也会被同时删除。

举个例子,当我们想要更换电脑等设备时,我们会将数据迁移到外部的移动硬盘等设备上,但容器也是一样的,它会将数据导出到外部。然而,与硬盘不同的是,容器并不需要每次都迁移数据,而是直接将数据存储在外部,然后从那里访问和使用,这是一种常见的做法。

这个存储数据的地方称为挂载的存储空间。

Dockerfile是什么?

Dockerfile指的是一种用于描述创建新Docker镜像的步骤的文本文件。通过创建名为Dockerfile的文本文件,可以制作Docker镜像。

使用Dockerfile有以下优点:

可以按照自己喜欢的方式进行自定义设计。

可以通过文件进行管理

可以自动化一系列步骤。

将Dockerfile分发给开发者。

通过共享,可以轻松地构建相同的环境。

Docker Compose是什么?

Docker Compose 是一种将多个容器构建和运行的命令写入单个文本文件,可以一次性执行、停止和销毁的工具。随着对命令操作的熟悉程度提高,使用多个容器构建系统会变得有些麻烦,但使用 Docker Compose 可以轻松完成这些任务。

在Docker Compose中,我们使用YAML格式准备一个包含关于构建定义的文件。
在定义文件中,我们可以记录想要以这些配置方式创建的容器和卷的项目。

Dockerfile和Docker Compose之间的区别是什么?

Docker Compose与Dockerfile相似,都是通过编写文本文件来定义并执行命令。不同的是,Docker Compose是一组docker run命令的集合,用于创建容器和相关环境。而Dockerfile仅用于创建映像(image),无法创建容量卷(volume)或网络等。

最后

我們之前主題是關於Docker的概述,現在我們也想要分享有關實際的指令操作。

bannerAds