Docker基本概念

Docker的意义

Docker是开发人员和系统管理员构建,发布和运行应用程序的平台。Docker允许您快速使用组件组装应用程序,并消除运送代码时可能产生的改变。Docker允许您尽快测试并将代码部署到生产环境中。

Docker可以简化软件交付,是通过简化构建包含应用程序整个环境或应用程序操作系统的镜像,并共享这个镜像。

应用程序操作系统表示什么?

您的应用程序通常需要操作系统,服务器,JDK和数据库的特定版本,可能需要调整配置文件以及类似的多个其他依赖项。应用程序可能需要绑定到特定端口和一定量的内存。运行应用程序所需的组件和配置一起被称为应用程序操作系统。

您当然可以提供一个安装脚本来下载和安装这些组件。Docker通过允许创建一个包含您的应用程序和基础架构的镜像,并将其作为一个组件进行管理来简化此过程。然后这些镜像用于创建在Docker提供的容器虚拟化平台上运行的Docker容器。

Docker的主要组件

Docker有三个主要组件:

  • Images是Docker的构建组件,是定义应用程序操作系统的只读模板。
  • Containers 是Docker的运行组件,由Images创建。容器可以运行,启动,停止,移动和删除。
  • Images在registry中存储,共享和管理,并且是Docker的分发组件。Docker Store是一个公开可用的registry,可在http://store.docker.com上找到。

为了使这三个组件一起工作,Docker Daemon(或Docker Engine)在主机上运行,​​并负责构建,运行和分发Docker容器。另外,client是一个Docker二进制库,它接受来自用户的命令并与Engine进行通信。下图是Docker体系结构


client与位于同一主机或不同主机上的Engine进行通信。client使用pull命令请求引擎从注册表中提取图像。然后引擎从Docker Store下载镜像,或者从配置的任何registry中下载镜像。可以从registry下载多个镜像并安装在Engine上。client使用run命令运行容器。

Docker Image

我们已经看到Docker镜像是用于启动Docker容器的只读模板。每个镜像由一系列layers组成。Docker利用联合文件系统将这些图层合并为一个镜像。union file systems允许将分离文件系统的文件和目录(称为分支)透明地重叠,形成一个统一的文件系统。

Docker轻量级的原因之一就是由于这些layers。当您更改Docker镜像时(例如,将应用程序更新为新版本),会创建一个新层。因此,不会像使用虚拟机一样替换整个镜像或完全重建镜像,而是只添加或更新该layer。现在,您不需要分发全新的镜像,只需更新即可,从而更快速,更简单地分发Docker镜像。

每个镜像都会基于一个基本的镜像,例如ubuntu(一个基本的Ubuntu映像),或Fedora(一个基本的Fedora映像)。您也可以使用自己的镜像作为新镜像的基础,例如,如果您有基本的Apache镜像,则可以将其用作所有Web应用程序镜像的基础。

然后使用一组简单的,可描述的步骤(我们称之为指令)从这些基础镜像构建Docker镜像。每条指令都会在镜像中创建一个新图层。指令包括如下操作:

  • Run a command

  • Add a file or directory

  • Create an environment variable

  • Run a process when launching a container

这些指令存储在一个名为Dockerfile的文件中。当您请求构建​​镜像,执行指令并返回最终镜像时,Docker会读取此Dockerfile。

Docker Container

容器由操作系统,用户添加的文件和元数据组成。正如我们所看到的,每个容器都是从镜像构建的。该镜像告诉Docker容器包含什么,容器启动时要运行的进程以及各种其他配置数据。Docker镜像是只读的。当Docker从一个镜像运行容器时,它会在镜像顶部添加一个可读写层(使用前面看到的union文件系统),然后您的应用程序可以在这个可读写层中运行。

Docker Engine

Docker主机是作为在您的机器上安装Docker的一部分而创建的。一旦你的Docker主机被创建,它就允许你管理镜像和容器。例如,镜像可以下载,容器可以启动,停止和重新启动。

Docker Client

客户端与Docker主机进行通信,让我们可以处理镜像和容器。

使用以下命令检查您的客户端是否正在工作:

docker -v
它输出如下内容:
Docker version 17.09.0-ce-rc3, build 2357fb2
客户端和服务器的确切版本可以使用docker version命令查看。输出内容为:

Client:
 Version:      17.09.0-ce-rc3
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   2357fb2
 Built:        Thu Sep 21 02:31:18 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.09.0-ce-rc3
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   2357fb2
 Built:        Thu Sep 21 02:36:52 2017
 OS/Arch:      linux/amd64
 Experimental: true

猜你喜欢

转载自blog.csdn.net/qq_34680763/article/details/80170930
今日推荐