Docker 什么是Docker

在这里插入图片描述

什么是Docker

Docker 是一个开源的应用容器引擎,基于Go 语言并遵从Apache2.0协议开源。
Docker可以在几毫秒内为您提供一个沙盒环境,容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何一台装有Docker的机器上。
Docker有助于将一个复杂系统分解为一系列可组合的部分,这使您能够以一种更加离散的方式对服务进行推理。
Docker在一台机器上起成百上千个独立的容器,有助于模拟网络,使网络建模成为一件轻而易举的事情。

Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker特性

  • 隔离性:libcontainer(默认容器)=> 内核命名空间。
  • 安全性:内部(cgroups)| 容器和宿主主机(内核能力机制)。
  • 可度量性:cgroups(控制组)→ 资源度量和分配(用户)。
  • 移植性:AUFS(快速更新)→ 层的概念。
    -----使用AUFS作为Docker容器的文件系统,提供的好处:

节省存储空间:多个容器可以共享同一个基础镜像存储。 快速部署:当要部署多个来自同一个基础镜像的容器时,避免了多次复制操作。
升级方便:升级一个基础镜像即可影响到所有基于它的容器。
增量修改:可以在不改变基础镜像的同时修改其他目录文件,所有的更改都发生在最上层的写操作层,这大大增加了基础镜像的可共享内容。

在这里插入图片描述

Docker的缺点

Docker的安装非常容易。目前,Docker支持所有的Linux系列系统,如Ubuntu、RHEL、Debian等。通过Boot2Docker虚拟工具,在OS X和Windows下也能够运行Docker。
但目前而言,Docker的运行环境也有限制,具体如下。

  • 必须是在64位机器上运行,并且目前仅支持x86_ _64和AMD64, 32位系统暂时不支持。
  • 系统的Linux内核必须是3.8或者更新的,内核支持Device Mapper、AUFS、VFS、btrfs等存储格式。
  • 内核必须支持cgroups和命名空间。

Docker的优点

简化程序发布过程:

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何一台装有Docker的机器上。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。

提供统一的开发环境:

Docker 镜像中包含了运行环境和配置,Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
开发、测试、生成环境使用相同的镜像,从而保证运行环境一致。

节省开支:

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

Docker的架构

我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。

在这里插入图片描述

Docker组件:镜像、容器、仓库

镜像(Image):一个只读的静态模板(框架体系);包含环境和应用执行代码(框架语言);采用分层机制。将新增数据通过联合文件系统附加在原基础上。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):一个运行时环境,是镜像的运行状态,是镜像执行的一种动态表现。就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):使用注册服务器存储和共享用户的镜像,是某个特定用户存储镜像的目录。
采用C/S架构:客户端(执行程序)→通过命令行和API形式和守候程序(提供Docker服务)进行通讯。

相关链接
Docker 官网:http://www.docker.com
Github Docker 源码:https://github.com/docker/docker
Docker 核心技术与实现原理:https://draveness.me/docker

发布了58 篇原创文章 · 获赞 236 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_23934063/article/details/103991007