编译docker使用:架构、原理等基本概念有哪些?有什么优点和缺点?
作者:大刚的测试与开发实践
1.什么是docker
官方地址:https://docs.docker.com/
Docker是一个在此基础上开发的开源应用容器引擎go语言的。它允许开发人员将他们的应用程序和依赖项打包到一个便携式容器中,然后将它们发布到任何流行的也可以虚拟化的 Linux 机器上。 ![]()
![]()
2。 Docker的基本概念
Docker的三个基本概念:镜像image、容器container、仓库Repository
- Image(镜像):Docker镜像(image)相当于根文件系统。例如,官方的ubuntu:16.04镜像包含了最小Ubuntu16.04系统的一套完整的根文件系统。
- 容器(Kontajner):图像(Image)和容器(Container)之间的关系就像面向对象编程中的类和实例的关系一样。镜像是静态定义,容器是镜像运行时的实体。 。容器可以被创建、启动、停止、删除、暂停等。可以基于镜像创建容器,同一个镜像可以创建多个容器;
| docker | 面向对象 |
| 容器 | 对象 |
| 镜像 |
- 类
- 存储库
- 被视为代码控制中心,自定义存储图像。该图像存储在库存中,并且可以从库存中下载。


3。 Docker架构和原理


- Docker采用客户端-服务器(C/S)架构模型,并使用远程API来管理和创建Docker容器。
- 架构可分为客户端和服务器端;
- Docker Daemon 是 docker 守护进程;
- 容器是容器运行的流程,是容器实现的核心;
- 客户端将Interact内部API传递给服务器端守护进程,然后通过容器分发到各个容器;
概念 描述 Docker Image(镜像) Docker Image 是用于创建 Docker 容器的模板。可以基于镜像创建容器,同一个镜像可以创建多个容器; Docker容器(Container) 容器是独立运行的一个应用程序或一组应用程序,在镜像运行时是一个实体。 Docker 客户端(client) Docker 客户端使用 Docker SDK(https://docs.docker.com/develop/sdk/)通过命令行或其他工具与 Docker 守护进程进行通信。 Docker Host(主机) 用于运行 Docker 守护进程和容器的物理或虚拟机。 DockerRegistry Docker 仓库用于存储镜像,可以认为是代码控制中的代码仓库。镜像仓库分为公共的Docker Hub镜像仓库和一些私有部署的仓库如:Harbor(这两个类似于github和gitlab)。 Docker Hub (https://hub.docker.com) 提供了大量可供使用的镜像。 。一个 Docker 注册表可以包含多个存储库;每个存储库可以包含多个标签;每个标记对应一张图片。存储库通常包含同一软件的不同版本的映像,并且通常使用与软件的每个版本相对应的标签。我们可以使用 : 格式来确定镜像是该软件的哪个版本。如果未指定标签,则使用最新的标签作为默认标签。 Docker Machine Docker Machine 是一个命令行工具,可以简化 Docker 的安装。您可以使用简单的命令行在相应的平台上安装Docker,例如VirtualBox、Digital Ocean和Microsoft Azure。 4。轻量级docker实现原理
Docker容器本质上是一个宿主进程。 Docker 通过命名空间实现资源隔离,通过 cgroup 实现资源限制,以及写时复制机制。 write) 实现高效的文件操作。
命名空间资源隔离
Linux内核提供了6种命名空间隔离系统调用:
命名空间 系统调用参数 ‽ CL隔离内容_NEWUTS 主机名称或域名(来自 Linux 2.6.19) IPC CLONE_NEWIPC 信号量、消息队列和共享内存(从 Linux 2.6.19 开始) WPID''‸CLIDONE 进程号(从 Linux 2.6 . 24 开始) 网络 CLONE_NEWNET 网络设备、堆栈、端口等(自Linux 2.6.24起) 挂载ONE_fil NEW'系统(来自1个优势 - 更有效地利用系统资源
- 更快的启动时间
- 一致的运行环境
- 持续交付和部署
- 更容易迁移‷2. Docker 基于 Linux 64 位 是的,不能在 32 位 linux/windows/unix 环境中使用
- Docker 并不适合所有应用场景 Docker 只能虚拟化基于 Linux 的服务
- Instances Docker 是无状态的,不会存储当前操作行为的数据。:当容器被销毁后,重新创建容器并不会保存之前的数据,一种方法是使用数据连接技术将数据挂载到指定目录解决这个问题的方法是在主机上使用 docker commit 命令将容器构建为新的镜像,从而达到环境持久化的目的。
- 存储库
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网