Docker是一个开源的应用容器引擎,开发人员可以非常容易地打包已经开发好的应用,同时将应用相关的依赖包也打包到这样一个可移植的容器中,然后发布到任意的Linux主机系统上。Docker是基于Linux Container(LXC)技术实现的一个轻量级虚拟化解决方案,用户可以直接使用容器(Container),来构建自己的应用程序,应用开发人员无需将注意力集中在容器的管理上。Docker的目标是“Build,Ship and Run Any App,Anywhere”,这说明了使用Docker能够实现应用运行的可移植性、便捷性,对开发人员非常友好,只要你的应用是基于Docker进行构建和部署的,在任何时候任何支持Docker的Linux发行版操作系统上都可以运行你的应用程序。
Docker是基于Go语言开发的, 代码开源,可以在Github上查看对应的源码:https://github.com/docker/docker.git。
基本构架
Docker基于Client-Server架构,Docker daemon是服务端,Docker client是客户端。Docker的基本架构,如下图所示:
上图中,除了展现了Docker的Client、Server、Containers、Images、Registry之间的关系,我们主要说明Docker daemon和Docker client,关于其他组件我们后面详述:
Docker daemon运行在宿主机上,它是一个long-running进程,用户通过Docker client与Docker daemon进行交互。
Docker client为用户提供了与Docker daemon交互的接口,在安装Docker的时候就已经安装,可以通过docker命令来操作。一个Docker client可以与同一个宿主机上的Docker daemon交互,也可以与远程的Docker daemon进行交互。
基本概念
Registry
Registry是一个服务,它负责管理一个或多个Repository(仓库),而Repository还包含公共仓库(Public Repository)和私有仓库(Private Repository)。默认的Registry是Docker Hub,它管理了按照不同用途分类的很多公共仓库,任何人都可以到Docker Hub上查找自己需要的Image,或者可以使用docker search命令来搜索对应Image,例如我们查询关键词hadoop,示例命令如下所示:
查询结果如下所示:
01
NAME DESCRIPTION STARS OFFICIAL AUTOMATED |
02 |
sequenceiq/hadoop-docker An easy way to try Hadoop 428 [OK] |
03 |
sequenceiq/hadoop-ubuntu An easy way to try Hadoop on Ubuntu 40 [OK] |
04
uhopper/hadoop Base Hadoop image with dynamic configurati... 16 [OK] |
05 |
ruo91/hadoop Apache hadoop 2.x - Pseudo-Distributed Mode 12 [OK] |
06
harisekhon/hadoop Apache Hadoop (HDFS + Yarn,tags 2.5 - 2.7) 8 [OK] |
07 |
gelog/hadoop Use at your own risk. 5 [OK] |
08
athlinks/hadoop Distributed Highly Available Hadoop Cluste... 3 [OK] |
09 |
dockmob/hadoop Docker images for Apache Hadoop (YARN,HDF... 3 [OK] |
10
uhopper/hadoop-resourcemanager Hadoop resourcemanager 3 [OK] |
11 |
harisekhon/hadoop-dev Apache Hadoop (HDFS + Yarn) + Dev Tools + ... 3 [OK] |
12
izone/hadoop Hadoop 2.7.3 Ecosystem fully distributed,... 3 [OK] |
13 |
uhopper/hadoop-namenode Hadoop namenode 2 [OK] |
14
singularities/hadoop Apache Hadoop 2 [OK] |
15 |
uhopper/hadoop-datanode Hadoop datanode 2 [OK] |
16
uhopper/hadoop-nodemanager Hadoop nodemanager 2 [OK] |
17 |
lewuathe/hadoop-master Multiple node hadoop cluster on Docker. 2 [OK] |
18
robingu/hadoop hadoop 2.7 1 [OK] |
19 |
mcapitanio/hadoop Docker image running Hadoop in psedo-distr... 1 [OK] |
20
takaomag/hadoop docker image of archlinux (hadoop) 1 [OK] |
21 |
ymian/hadoop hadoop 0 [OK] |
22
2breakfast/hadoop hadoop in docker 0 [OK] |
23 |
ading1977/hadoop Docker image for multi-node hadoop cluster. 0 [OK] |
24
meteogroup/hadoop Apache™ Hadoop® in a docker image. 0 [OK] |
25 |
hegand/hadoop-base Hadoop base docker image 0 [OK] |
26
elek/hadoop Base image for hadoop components (yarn/hdfs) 0 [OK] |