不多說,直接上干貨!
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
- 執行環境
- 一個標准指令的集合