即学即用Docker(四):Docker镜像管理
2019-09-02阅读 2275

今天让我们来讲一下Docker的镜像,首先我们先了解一些概念


容器和镜像

 

如果曾经做过 VM 管理员,可以把 Docker 镜像理解为 VM 模板,而运行的VM就是容器

如果你是名研发人员,则可以将镜像理解为类(Class),而容器就是对象

用一句话来说镜像是容器的模板,容器是镜像的运行实例

 11.gif

 

镜像仓库服务

 

Docker 镜像存储在镜像仓库服务(Image Registry)当中。用户可以从Registry进行镜像下载和访问,可分为公有和私有两类Registry。

 

公有镜像仓库:

Docker Hub是Docker公司为公众提供的托管Registry。

Quay.io现为Red Hat下的公共托管Registry。

 

私有镜像仓库:

企业可以用Docker Registry构建私有的Registry。

Registry本身是一个开源项目,可以用于搭建私有Registry。

 

最常用的公用镜像仓库就是Docker Hub,Docker Hub是目前世界上最大的容器镜像仓库,由Docker公司维护,里面有Docker公司提供的镜像及大量用户上传的镜像。以下是它的地址

https://hub.docker.com/

 

 

Docker Hub的优点:

为开发者提供了海量Docker镜像,供免费下载学习和使用;

拥有完善的账户管理系统,为用户提供付费扩容;

服务器采用分布式部署,支持负载均衡;

支持镜像上传、下载、查询、删除及属性设置等多种操作;

支持在线编译镜像;

后端采用分布式存储,可容灾备份;

其核心是Docker distribution,在开源社区上设计维护,会不断更新和完善;

提供企业版Docker Hub,为企业级用户提供一站式解决方案。

 

镜像和分层

 

所有的 Docker 镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。最常用的base镜像是各Linux发行版的Docker镜像,如ubuntu、centos等。

 

举一个简单的例子,假如基于 Ubuntu Linux 16.04 创建一个新的镜像,这就是新镜像的第一层;如果在该镜像中添加 Python 包,就会在基础镜像层之上创建第二个镜像层;如果继续添加一个安全补丁,就会创建第三个镜像层。

 

该镜像当前已经包含 3 个镜像层,如下图所示(这只是一个用于演示的很简单的例子)。

 12.gif

所以,Docker 镜像由一些松耦合的只读镜像层组成。Docker 负责堆叠这些镜像层,并且将它们表示为单个统一的对象。

并且多个镜像之间可以共享镜像层,这样还可以有效节省空间并提升性能。

 

常用的镜像操作

 

拉取镜像:

从官方仓库拉取镜像时,docker image pull 命令的格式如下:

docker image pull <repository>:<tag>

 

示例:让我们拉取一个ubuntu吧

13.jpg

 

列出镜像:

docker images [OPTIONS] [REPOSITORY]

示例:

 15.jpg


查看镜像的详细信息:

docker inspect [OPTION] CONTAINER|IMAGE [CONTAINER|IMAGE...]

 16.jpg


查找镜像:

 

你想知道有哪些镜像,docker search命令楞以帮助我们搜索Docker Hub,以下示例

docker search [image_name][:tag]

 14.jpg


删除镜像:

docker rmi [OPTIONS] IMAGE [IMAGES...]

17.jpg

头像
韩梅
60
文章总数
165623
总阅读数