Docker 概览
什么是Docker
Docker是开发,运行和部署应用程序的开放管理平台。 开发人员能利用docker 开发和运行应用程序 运维人员能利用docker 部署和管理应用程序

Docker 平台介绍
Docker提供了在一个完全隔离的环境中打包和运行应用程序的能力,这个隔离的环境被称为容器。
由于容器的隔离性和安全性,因此可以在一个主机(宿主机)上同时运行多个相互隔离的容器,互不干预。
Docker已经提供工具和组件(Docker Client、Docker Daemon等)来管理容器的生命周期: 使用容器来开发应用程序及其支持组件。
容器成为分发和测试你的应用程序的单元。 准备好后,将您的应用程序部署到生产环境中,作为容器或协调服务。无论您的生产环境是本地数据中心,云提供商还是两者的混合,这都是一样的。
为什么用 Docker
Docker使您能够将应用程序与基础架构分开,以便您可以快速交付软件。 借助Docker,您可以像管理应用程序一样管理基础架构。
通过利用Docker的方法快速进行运输,测试和部署代码,您可以显着缩短编写代码和在生产环境中运行代码之间的延迟。
如:
- 开发人员在本地编写代码,可以使用Docker同事进行共享,实现协同工作。
- 使用Docker开发完成程序,可以直接对应用程序执行自动和手动测试。
- 当开发人员发现错误或BUG时,可以直接在开发环境中修复后,并迅速将它们重新部署到测试环境进行测试和验证。
- 利用Docker开发完成后,交付时,直接交付Docker,也就意味着交付完成。
- 后续如果有提供修补程序或更新,需要推送到生成环境运行起来,也是一样的简单。
Docker主要解决的问题:
- 保证程序运行环境的一致性;
- 降低配置开发环境、生产环境的复杂度和成本;
- 实现程序的快速部署和分发。
Docker 引擎介绍
Docker Engine是一个包含以下组件的 客户端-服务端(C/S)应用程序
- 服务端 --- 一个长时间运行的守护进程(Docker Daemon)
- REST API --- 一套用于与Docker Daemon通信并指示其执行操作的接口
- 客户端 --- 命令行接口CLI( Command Line Interface)

CLI利用Docker命令通过REST API直接操控Docker Daemon执行操作
Docker Daemon负责创建并管理Docker的对象(镜像、容器、网络、数据卷)
Docker结构概览图

Docker 结构简介
Docker客户端(Docker Client)
- Docker客户端(Docker Client)是用户与Docker进行交互的最主要方式。
- 当在终端输入docker命令时,对应的就会在服务端产生对应的作用,并把结果返回给客户端。
- Docker Client除了连接本地服务端,通过更改或指定DOCKER_HOST连接远程服务端。
Docker服务端(Docker Server)
- Docker Daemon其实就是Docker 的服务端。
- 它负责监听Docker API请求(如Docker Client)并管理Docker对象(Docker Objects),如镜像、容器、网络、数据卷等
Docker Registries
- 俗称Docker仓库,专门用于存储镜像的云服务环境.
- Docker Hub就是一个公有的存放镜像的地方,类似Github存储代码文件。同样的也可以类似Github那样搭建私有的仓库。
Docker 对象
- (Docker Objects) 镜像:一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。
- 容器:镜像被运行起来后的实例。
- 网络:外部或者容器间如何互相访问的网络方式,如host模式、bridge模式。
- 数据卷:容器与宿主机之间、容器与容器之间共享存储方式,类似虚拟机与主机之间的共享文件目录。
Docker 底层技术了解
Docker使用Go语言实现。
Docker利用linux内核的几个特性来实现功能:
- 利用linux的命名空间(Namespaces)
- 利用linux控制组(Control Groups)
- 利用linux的联合文件系统(Union File Systems)
- 这也就意味着Docker只能在linux上运行。
- 在windows、MacOS上运行Docker,其实本质上是借助了虚拟化技术,然后在linux虚拟机上运行的Docker程序。
容器格式( Container Format ):
- Docker Engine将namespace、cgroups、UnionFS进行组合后的一个package,就是一个容器格式(Container Format)。Docker通过对这个package中的namespace、cgroups、UnionFS进行管理控制实现容器的创建和
- 生命周期管理。
- 容器格式(Container Format)有多种,其中Docker目前使用的容器格式被称为libcontainer
Namespaces(命名空间):为Docker容器提供操作系统层面的隔离
- 进程号隔离:每一个容器内运行的第一个进程,进程号总是从1开始起算
- 网络隔离:容器的网络与宿主机或其他容器的网络是隔离的、分开的,也就是相当于两个网络
- 进程间通隔离:容器中的进程与宿主机或其他容器中的进程是互相不可见的,通信需要借助网络
- 文件系统挂载隔离: 容器拥有自己单独的工作目录
- 内核以及系统版本号隔离:容器查看内核版本号或者系统版本号时,查看的是容器的,而非宿主机的
Control Groups(控制组-cgroups):为Docker容器提供硬件层面的隔离
- 控制组能控制应用程序所使用的硬件资源。
- 基于该性质,控制组帮助docker引擎将硬件资源共享给容器使用,并且加以约束和限制。如控制容器所使用的内存大小。
- Union File Systems(联合文件系统--UnionFS):利用分层(layer)思想管理镜像和容器
Docker 概览的更多相关文章
- Docker概览
Docker.xmind下载
- docker 概览 (1)
Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化.容器是完全使 ...
- Kubernetes & Docker
Docker核心技术原理及其应用 Docker 概览 Docker版本与安装介绍 Docker 核心技术之镜像 Docker 核心技术之容器 Docker 核心技术之容器与镜像 Docker 核心技术 ...
- Docker 生态概览
Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker 自从发布以来发生了很多的变化,并且有些 ...
- docker底层技术概览
docker解决了云计算环境难于分发并且管理复杂,而用KVM.Xen等虚拟化又浪费系统资源的问题.Docker最初是基于lxc构建了容器引擎,为了提供跨平台支持,后又专门开发了libcontainer ...
- Docker生态概览
百花齐放的容器技术 虽然 docker 把容器技术推向了巅峰,但容器技术却不是从 docker 诞生的.实际上,容器技术连新技术都算不上,因为它的诞生和使用确实有些年头了.下面的一串名称肯能有的你都没 ...
- Docker容器编排器概览
就像Apple推出iPhone让智能手机变成主流,Docker让容器变成了主流.自从项目发布以来,Docker着重于提升开发者的体验.基本理念是可以在整个行业中,在一个标准的框架上,构建.交付并且运行 ...
- 初识Docker和Windows Server容器
概览 伴随着Windows Server 2016 Technical Preview 3 (TP3)版本的发布,微软首次提供了Windows平台下地原生容器.它集成了Docker对Windows S ...
- docker好文收藏
深入浅出Docker(一):Docker核心技术预览 2. 核心技术预览 Docker核心是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观.我们从虚拟化方法的四个方面:隔离性.可配额/可度 ...
随机推荐
- Python3+Flask+uwsgi部署
python3 按照常规的方式安装即可: wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz tar zxvf Python-3 ...
- Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫
爬前准备工作 在开始安装Appium之前,你要先知道Appium是做什么的?Appium 是一个自动化测试开源工具,看到没,做测试用的,它有点类似Selenium,可以自动操作APP实现一系列的操作. ...
- Python捕捉系统信号
#!/usr/bin/env python # -*- coding: utf-8 -*- import signal import sys """ Python捕捉中断 ...
- 详解MySQL表空间以及ibdata1文件过大问题
ibdata1文件过大 原因分析 ibdata1是一个用来构建innodb系统表空间的文件,关于系统表空间详细介绍参考MySQL官网文档 上面是一个数据库的ibdata1文件,达到了780多G,而且还 ...
- AspNetCoreapi 使用 Docker + Centos 7部署
好久没有更新文章了,前段时间写了一系列的文章放到桌面了,想着修修改改,后来系统中勒索病毒了还被公司网络安全的抓到是我电脑,后来装系统文章给装丢了.然后好长一段时间没有写了. 今天记录一下AspNetC ...
- winform注册功能
注册按钮事件: private void btnRegister_Click(object sender, EventArgs e) { string username = txtUserName.T ...
- spring boot 2.0 ribbon 负载均衡配置
1.pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId ...
- Java并发——synchronized关键字
前言: 只要涉及到Java并发那么我们就会考虑线程安全,实际上能够实现线程安全的方法很多,今天先介绍一下synchronized关键字,主要从使用,原理介绍 一.synchronized的使用方法 1 ...
- SAP MM A工厂下的PR可以转成B工厂下的PO?
SAP MM A工厂下的PR可以转成B工厂下的PO? 答案是可能的,这也是SAP标准行为之一. 如下图采购申请单据, PR中的Plant是GENL.该PR 已经转成了PO,如上图. 看这个PO,工厂代 ...
- python docx文档转html页面
文章链接:https://mp.weixin.qq.com/s/uMb2ziRS1NJ1GXIjofeANg 说到word文档转html的,网上一搜一大把,各种在线word转html页面,使用起来也方 ...