Docker源码分析(十):Docker镜像下载

1.前言 说Docker Image是Docker体系的价值所在,没有丝毫得夸大其词。Docker Image作为容器运行环境的基石,彻底解放了Docker容器创建的生命力,也激发了用户对于容器运用的无限想象力。 玩转Docker,必然离不开Docker Image的支持。然而“万物皆有源”,Docker Image来自何方,Docker Image又是通过何种途径被传输到了本地,以致用户可以通过Docker Image创建容器?回忆起初次接触Docker的场景,大家肯定对两条命令不陌生:docker pull和docker run。这两条命令中, »

Docker源码分析(九):Docker镜像

1.前言 回首过去的2014年,大家可以看到Docker在全球刮起了一阵又一阵的“容器风”,工业界对Docker的探索与实践更是一波高过一波。在如今的2015年以及未来,Docker似乎并不会像其他昙花一现的技术一样,在历史的舞台上热潮褪去,反而在工业界实践与评估之后,显现了前所未有的发展潜力。 究其本质,“Docker提供容器服务”这句话,相信很少有人会有异议。那么,既然Docker提供的服务属于“容器”技术,那么反观“容器”技术的本质与历史,我们又可以发现什么呢?正如前文所提到的,Docker使用的“容器” »

Docker源码分析(八):Docker Container网络(下)

1.Docker Client配置容器网络模式 Docker Container网络模式的多样性,更多得满足了Docker用户部署应用的网络需求。Docker用户,或者基于Docker的二次开发者,均可以在这基础上,选择使用与自身应用最为贴切的网络模式。 从Docker Container网络创建流程图中可以看到,创建流程第一个涉及的Docker模块即为Docker Client。当然,这也十分好理解,毕竟Docker Container网络环境的创建需要由用户发起,用户根据自身对容器的需求,选择网络模式,并将其通过Docker Client传递给Docker Daemon。本节,即从Docker Client源码的角度, »

Docker源码分析(七):Docker Container网络 (上)

1.前言(什么是Docker Container) 如今,Docker技术大行其道,大家在尝试以及玩转Docker的同时,肯定离不开一个概念,那就是“容器”或者“Docker Container”。那么我们首先从实现的角度来看看“容器”或者“Docker Container”到底为何物。 逐渐熟悉Docker之后,大家肯定会深深得感受到:应用程序在Docker Container内部的部署与运行非常便捷,只要有Dockerfile,应用一键式的部署运行绝对不是天方夜谭; Docker »

DOCKER源码分析(六):DOCKER DAEMON网络

[摘要] Docker的容器特性和镜像特性已然为Docker实践者带来了诸多效益,然而Docker的网络特性却不能让用户满意。本文从Docker的网络模式入手,分析了Docker Daemon创建网络环境的详细流程,其中着重于分析Docker桥接模式的创建,为之后Docker Container创建网络环境做铺垫。 1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式。Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩、应用的运行都变得前所未有的方便与高效。同时,Docker借助强大的镜像技术,让应用的分发、部署与管理变得史无前例的便捷。然而,Docker毕竟是一项较为新颖的技术,在Docker的世界中,用户并非一劳永逸,其中最为典型的便是Docker的网络问题。 毋庸置疑, »

Docker源码分析(五):Docker Server的创建

【摘要】 Docker Server作为Docker Daemon架构中请求的入口,接管了所有Docker Daemon对外的通信。通信API的规范性,通信过程的安全性,服务请求的并发能力,往往都是Docker用户最为关心的内容。本文基于源码,分析了Docker Server大部分的细节实现,力求帮助Docker用户初探Docker Server的设计理念。1. Docker Server简介 Docker架构中,Docker Server是Docker Daemon的重要组成部分。Docker Server最主要的功能是:接受用户通过Docker Client发送的请求, »

Docker源码分析(四):Docker Daemon之NewDaemon实现

【摘要】 Docker架构中Docker Daemon支撑着整个后台的运行,同时也统一化管理着Docker架构中graph、graphdriver、execdriver、volumes、Docker container等众多资源。可以说,Docker Daemon复杂的运作均由daemon对象来调度,而newDaemon的实现恰巧可以帮助大家了解这一切的来龙去脉。1. 前言 Docker的生态系统日趋完善,开发者群体也在日趋庞大,这让业界对Docker持续抱有极其乐观的态度。然而,对于广大开发者而言,使用Docker这项技术已然不是门槛,享受Docker带来的技术福利已不是困难。如今,如何探寻Docker适应的场景,如何发展Docker周边的技术,以及如何弥合Docker新技术与传统物理机或VM技术的鸿沟, »

Docker源码分析(三):Docker Daemon启动

【摘要】【Docker源码分析(三):Docker Daemon启动】Docker作为业界备受推崇的轻量级虚拟化容器管理引擎,其强大的后台能力全凭Docker Daemon。本文从源码出发,介绍了Docker Daemon的启动流程,并深入分析启动流程中每一步骤的实现细节。Docker的运行真可谓,载体为daemon,调度管理由engine,任务执行靠job。1 前言 Docker诞生以来,便引领了轻量级虚拟化容器领域的技术热潮。在这一潮流下,Google、IBM、Redhat等业界翘楚纷纷加入Docker阵营。虽然目前Docker仍然主要基于Linux平台,但是Microsoft却多次宣布对Docker的支持, »

Docker源码分析(二):Docker Client创建与命令执行

【摘要】 该文为《Docker源码分析》系列第二篇,在Docker架构篇的基础上,继续从源码的角度出发,分析用户如何创建Docker Client,以及如何通过Docker Client发送用户具体请求。可以说,发挥Docker最大魅力,从使用Docker做起,使用Docker,从精通Docker Client入手。1. 前言 如今,Docker作为业界领先的轻量级虚拟化容器管理引擎,给全球开发者提供了一种新颖、便捷的软件集成测试与部署之道。在团队开发软件时,Docker可以提供可复用的运行环境、灵活的资源配置、便捷的集成测试方法以及一键式的部署方式。 »

Docker源码分析(一):Docker架构

1 背景 1.1 Docker简介 Docker是Docker公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。目前,Docker可以在容器内部快速自动化部署应用,并可以通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率,并且提升诸如IO等方面的性能。 由于众多新颖的特性以及项目本身的开放性,Docker在不到两年的时间里迅速获得诸多厂商的青睐,其中更是包括Google、Microsoft、 »