docker用法整理:架构及原理等核心概念有哪些?优缺点都有啥?

2023年 7月 10日 43.3k 0

一、什么是docker

官方地址:https://docs.docker.com/

Docker 是一个基于go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

docker用法整理:架构及原理等核心概念有哪些?优缺点都有啥?

二、docker核心概念

docker三大核心概念:镜像 Image、容器 Container、仓库 Repository

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。基于镜像可以创建容器,同一个镜像可以创建多个容器;
docker 面向对象
容器 对象
镜像
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。镜像存放在仓库中,可以从仓库中拉取。

docker用法整理:架构及原理等核心概念有哪些?优缺点都有啥?

三、docker架构及原理

docker用法整理:架构及原理等核心概念有哪些?优缺点都有啥?

  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
  • 架构上可以分为客户端和服务端;
  • Docker Daemon是docker的守护进程;
  • containerd是容器运行的进程,是实现容器的核心;
  • 客户端通过内部的API和服务端的守护进程进行交互,守护进程再通过containerd分发到各个容器;
概念 说明
Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板。基于镜像可以创建容器,同一个镜像可以创建多个容器;
Docker 容器(Container) 容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Registry Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。镜像仓库分为公共镜像仓库Docker Hub和一些私有化部署的仓库比如:Harbor(这两种类似于github和gitlab)Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 : 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

四、docker轻量级的实现原理

docker容器本质上是宿主机的进程,Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过写时复制机制(copy-on-write)实现了高效的文件操作。

namespace资源隔离

linux内核提拱了6种namespace隔离的系统调用:

namespace 系统调用参数 隔离内容
UTS CLONE_NEWUTS 主机名或域名 (since Linux 2.6.19)
IPC CLONE_NEWIPC 信号量、消息队列和共享内存(since Linux 2.6.19)
PID CLONE_NEWPID 进程编号(since Linux 2.6.24)
Network CLONE_NEWNET 网络设备、栈、端口等(since Linux 2.6.24)
Mount CLONE_NEWNS 挂载点(文件系统)(since Linux 2.6.24)
User CLONE_NEWUSER 用户组和用户组(started in Linux 2.6.23 and completed in Linux 3.8)

五、docker的优缺点

1.优点

  • 更高效利用系统资源
  • 更快速的启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的迁移

2.缺点

  • Docker是基于Linux 64bit的,无法在32bit的 linux/Windows/unix环境下使用
  • Docker并非适合所有应用场景,Docker只能虚拟基于 Linux的服务
  • Docker实例是无状态的,不会保存当前操作行为的数据:容器销毁后,再次创建容器不会保存之前的数据,一种方法是通过数据挂载技术将数据挂载到宿主机指定目录来解决此问题,另一种方法是通过docker commit命令来基于已有容器构建为新的镜像,从而达到环境持久化的目的。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论