【干货分享】即学即用Docker(四):Docker镜像管理
今天让我们来讲一下Docker的镜像,首先我们先了解一些概念容器和镜像
如果曾经做过 VM 管理员,可以把 Docker 镜像理解为 VM 模板,而运行的VM就是容器如果你是名研发人员,则可以将镜像理解为类(Class),而容器就是对象用一句话来说镜像是容器的模板,容器是镜像的运行实例 https://www.easthome.com/share/img/ae6291c5590378207dc3680076fc89f6.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 个镜像层,如下图所示(这只是一个用于演示的很简单的例子)。
https://www.easthome.com/share/img/1a74391bf9e344041ddc8f5715239b21.gif所以,Docker 镜像由一些松耦合的只读镜像层组成。Docker 负责堆叠这些镜像层,并且将它们表示为单个统一的对象。并且多个镜像之间可以共享镜像层,这样还可以有效节省空间并提升性能。
常用的镜像操作
拉取镜像:从官方仓库拉取镜像时,docker image pull 命令的格式如下:docker image pull <repository>:<tag>
示例:让我们拉取一个ubuntu吧https://www.easthome.com/share/img/7970d98e85b6be5e5037bf8dc275fbd5.jpg
列出镜像:docker images 示例:
https://www.easthome.com/share/img/2969053490d33da39e68607eae46646.jpg
查看镜像的详细信息:docker inspect CONTAINER|IMAGE
https://www.easthome.com/share/img/998761245df4c3acbea01c4a4b34250a.jpg
查找镜像:
你想知道有哪些镜像,docker search命令楞以帮助我们搜索Docker Hub,以下示例docker search [:tag]
https://www.easthome.com/share/img/2ab9bfb3f8a8d0703aa7426f70041117.jpg
删除镜像:docker rmi IMAGE https://www.easthome.com/share/img/2e45cff8f2c121a2df30a09f4c07fd9.jpg
具体问题可以添加通通微信(ruitong11111)进行咨询哦~
页:
[1]