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

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