第一章 Docker架构和简介

1.1. Docker简介


1.1.1什么是Docker

  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 。

  • Docker相比VM虚拟机可移植性更好,17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

Docker官网地址

Docker: Accelerated, Containerized Application Development

Docker源码地址

GitHub - moby/moby: Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

1.1.2docker应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

IaaS:(Infrastructure-as-a-Service)(基础设施即服务)

PaaS:(PlatformasaService)(平台即服务)

SaaS:(Software-as-a-Service)(软件即服务)

 

1.2docker架构

 

概念说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container)容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker 仓库(Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
Docker MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

1.2.1docker和传统虚拟机对比

 

Infrastructure可以看做是宿主机,Hypervisor可以看做是VMware。
Docker 容器架构直接在宿主机上运行,而传统虚拟机需要在宿主机中安装一个虚拟机。

  • 传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(VM),创建虚拟机,在虚拟机上安装linux操作系统,再从 Linux 操作系统中安装部署各种应用。也就是说,传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需要应用进程。这样导致的问题是资源占用多,冗余步骤多,启动慢。

  • Docker 容器内的应用进程直接运行在宿主机的内核(内核级虚拟化),容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
    每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进行不会相互影响,能区分计算资源,容器之间也可以建立通信机制。

  • Docker 有着比虚拟机更少的抽象层,因为 Docker 不需要虚拟机实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用的都是实际物理机的硬件资源,因为在CPU、内存利用率上 Docker 将会在效率上有明显发优势。
    Docker 利用的是宿主机的内核,而不需要加载操作系统 OS 内核。

posted @ 2020-06-09 22:57  蜜獾互联网  阅读(1)  评论(0编辑  收藏  举报  来源