镜像、容器、仓库是docker的三大核心概念。
docker镜像类似于虚拟机镜像,你可以将其理解为一个只读模板。
docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。
镜像自身是只读的。容器从镜像启动时,会在镜像的最上层创建一个可写层。
简单的说,容器是镜像的一个运行实例。所不同的是,镜像只是静态的只读文件,而容器带有运行时需要的可写文件层。
如果认为虚拟机是模拟运行的一整套操作系统(包括内核、应用运行态环境和其它系统环境)和跑在上面的应用,
那么docker容器就是独立运行的一个(或一组)应用,以及它必须的运行环境。
docker仓库类似于代码仓库,它是docker集中存放镜像文件的场所。
需要注意的是仓库(repository),不要将docker仓库和仓库注册服务器(registry)混淆。
仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库。
每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来区分。
比如,在下面这个仓库注册服务器中就有多个仓库,有Ubantu仓库、有CentOS的仓库,还有很多其它的仓库。
根据所存储的镜像是否公开,docker仓库可以分为公有仓库(public)和私有仓库(Private)两种形式。
目前最大的公开仓库是官方提供的Docker Hub。当然国内的很多云服务商也提供了很多源。
例如:阿里云、腾讯云、华为云、时速云、网易蜂巢等等。
查看某一个命令的帮助: man docker-xxx,例如man docker-images
还可以使用docker[-xx] --help,例如docker tag --help