Docker 简介

Docker 简介

Docker 是一个开源的应用容器引擎,可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker组成

  • DockerClient客户端
  • Docker Daemon守护进程
  • Docker内部
    • Docker Image镜像
    • DockerContainer容器
    • DockerRepository 仓库
      image

Docker守护进程
如上图所示,Docker守护进程运行在一台主机上。用户并不直接和守护进程进行交互,而是通过 Docker 客户端间接和其通信。

Docker 客户端
Docker 客户端,实际上是 docker 的二进制程序,是主要的用户与 Docker 交互方式。它接收用户指令并且与背后的 Docker 守护进程通信,如此来回往复。

Docker 内部
要理解Docker内部构建,需要理解以下三种部件:
Docker 镜像 – Docker Images
Docker 仓库 – Docker Registry
Docker 容器 – Docker Containers

Docker镜像是Docker容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。Docker 使用UnionFS 来将这些层联合到单独的镜像中。UnionFS 允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker 是如此的轻量。当你改变了一个 Docker 镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新 的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发 Docker 镜像变得简单和快速。

Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。同样的,Docker 仓库也有公有和私有的概念。公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部分。

Docker容器文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分。

Docker 架构

image

  • Docker 使用客户端-服务器 (C/S) 架构模式
  • 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信
  • Docker daemon 一般在宿主主机后台运行
  • Docker 容器通过 Docker 镜像来创建

应用场景

  • 使应用的打包与部署自动化
  • 创建轻量、私密的PAAS环境
  • 实现自动化测试和持续的集成/部署
  • 部署与扩展webapp、数据库和后台服务

Docker劣势

  • Docker是基于Linux 64bit的
  • 隔离性有些欠缺,所有container公用一部分的运行库
  • 网络管理相对简单,主要是基于namespace隔离
  • cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量
  • container随着用户进程的停止而销毁,container中的log等用户数据不便收集

核心原理

UnionFS:联合文件系统
DockerFile:自动化Docker容器的创建过程
镜像:可执行的完整项目环境

参考:
https://www.cnblogs.com/kevingrace/p/5252929.html

原文链接:https://www.cnblogs.com/yyyyzwd/p/15953838.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享