Docker的基本概念
1、Registry
Registry是一个服务,它负责管理一个或多个Repository(仓库),而Repository还包含公共仓库(Public Repository)和私有仓库(Private Repository)。默认的Registry是Docker Hub,它管理了按照不同用途分类的很多公共仓库,任何人都可以到Docker Hub上查找自己需要的Image,或者可以使用docker search命令来搜索对应Image。
例如我们查询关键词hadoop,示例命令如下所示:
docker search hadoop
查询结果如下所示:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED sequenceiq/hadoop-docker An easy way to try Hadoop 428 [OK] sequenceiq/hadoop-ubuntu An easy way to try Hadoop on Ubuntu 40 [OK] uhopper/hadoop Base Hadoop image with dynamic configurati... 16 [OK] ruo91/hadoop Apache hadoop 2.x - Pseudo-Distributed Mode 12 [OK] harisekhon/hadoop Apache Hadoop (HDFS + Yarn, tags 2.5 - 2.7) 8 [OK] gelog/hadoop Use at your own risk. 5 [OK] athlinks/hadoop Distributed Highly Available Hadoop Cluste... 3 [OK] dockmob/hadoop Docker images for Apache Hadoop (YARN, HDF... 3 [OK] uhopper/hadoop-resourcemanager Hadoop resourcemanager 3 [OK] harisekhon/hadoop-dev Apache Hadoop (HDFS + Yarn) + Dev Tools + ... 3 [OK] izone/hadoop Hadoop 2.7.3 Ecosystem fully distributed, ... 3 [OK] uhopper/hadoop-namenode Hadoop namenode 2 [OK] singularities/hadoop Apache Hadoop 2 [OK] uhopper/hadoop-datanode Hadoop datanode 2 [OK] uhopper/hadoop-nodemanager Hadoop nodemanager 2 [OK] lewuathe/hadoop-master Multiple node hadoop cluster on Docker. 2 [OK] robingu/hadoop hadoop 2.7 1 [OK] mcapitanio/hadoop Docker image running Hadoop in psedo-distr... 1 [OK] takaomag/hadoop docker image of archlinux (hadoop) 1 [OK] ymian/hadoop hadoop 0 [OK] 2breakfast/hadoop hadoop in docker 0 [OK] ading1977/hadoop Docker image for multi-node hadoop cluster. 0 [OK] meteogroup/hadoop Apache™ Hadoop® in a docker image. 0 [OK] hegand/hadoop-base Hadoop base docker image 0 [OK] elek/hadoop Base image for hadoop components (yarn/hdfs) 0 [OK]
上面可以看到,与hadoop相关的Image都被列出来了,可以根据自己的需要选择对应的Image下载并构建应用。
2、Image
Docker Image是Docker Container的基础,一个Image是对一个Root文件系统的执行变更操作的有序集合,也包括在运行时一个Container内部需要执行的参数的变化。
一个Image是静态的、无状态的,它具有不变性。如果想要修改一个Image,实际是重新创建了新的Image,在原来Image基础上修改后的一个副本。所以,往往我们制作一个Image的时候,可以基于已经存在的Image来构建新的的Image,然后Push到Repository中。
3、Repository
一个Repository是Docker Image的集合,它可以被Push到Registry而被共享,在Docker Hub就可以看到很多组织或个人贡献的Image,供大家共享。当然,你也可以将自己构建的Image Push到私有的Repository中。在Repository中不同的Image是通过tag来识别的,例如latest 、5.5.0等等。
4、Container
Container是一个Docker Image的运行时实例,从一个Image可以创建多个包含该应用的Container。一个Container包含如下几个部分:
- 一个Docker Image
- 执行环境
- 一个标准指令的集合