Docker的大部分操作都围绕着它的三大核心概念——镜像、容器和仓库而展开。因此,准确把握这三大核心概念对于掌握Docker技术尤为重要 。
1.Docker镜像
Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。 镜像是创建Docker容器的基础。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。
Docker运行容器前需要本地存在对应的镜像,如果镜像没保存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库 。
获取镜像
使用docker pull命令直接从Docker Hub镜像源来下载镜像。
该命令格式为docker pull NAME[:TAG],NAME是镜像仓库的名称,TAG是镜像的标签(通常表示版本信息)。
pull子命令支持的选项主要包括:
-a,--all-tags=true|false:是否获取仓库中的所有镜像,默认为否。
注意:如果不显示指定TAG,则默认会选择latest标签,会下载仓库中最新版的镜像,但是latest通常是不稳定版本。生产环境最好指定TAG,下载稳定版本。
大家可能有疑问,在使用不通的镜像仓库服务器的情况下,可能会出现镜像重名的情况。严格的讲,镜像的仓库名称还应该添加仓库地址(即registry,注册服务器)作为前缀,只是我们默认使用的是Docker Hub服务,该前缀可以忽略。
例如:docker pull ubuntu:14.04命令相当于docker pull registry.hub.docker.com/ubuntu:14.04
下载镜像到本地后,即可随时使用该镜像了,例如利用该镜像创建一个容器,在其中运行bash应用,执行ping localhost命令:
# docker run -it ubuntu:14.04 bash
root@9c74026df12a:/# ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.023 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.018 ms
root@9c74026df12a:/# exit
exit
查看镜像信息
使用docker images命令列出镜像
images子命令主要支持如下选项,用户可以自行进行尝试。
-a --all=true|false:列出所有的镜像文件(包括临时文件),默认为否
--digests=true|false:列出镜像的数字摘要值,默认为否
-f --filter=[]:过滤列出的镜像,如dangling=true只显示没有被使用的镜像;也可指定带有特定标注的镜像等
--format="TEMPLATE":控制输出格式
--no-trunc=true|false:对输出结果中太长的部分是否进行截断,如镜像的ID信息,默认为是
-q,--quiet=true|false:仅输出 ID信息,默认为否
更多子命令选项还可以通过man docker -images来查看
使用tag命令添加镜像标签
2.Docker容器
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层
3.Docker仓库
Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。
有时候会看到有资料将Docker仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库。
Docker技术入门之---Docker核心概念:镜像、容器、仓库(2)
原文:https://www.cnblogs.com/weidongliu/p/11156371.html