资讯专栏INFORMATION COLUMN

Docker学习之路(五)镜像的基本操作

yunhao / 2243人阅读

摘要:一个镜像可以放到另一个京广线的顶部,位于下面的镜像称为父镜像,最底部的称为基础镜像。镜像是基于联合文件系统的一种层式的结构,由一系列指令一步步构建处理。拉取镜像使用命令启动一个镜像时,会检查本地是否存在该镜像。

什么是镜像

Docker镜像时由文件系统叠加而成,最底端是一个引导文件系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导文件系统有交互。实际上,当一个容器启动后,他将会被移到内存中,而引导文件系统则会被卸载(unmount),以流出更多的内存供initrd磁盘镜像使用。

目前,Docker看起来还很像一个典型的Linux虚拟化栈。实际上,Docker镜像的第二层是root文件系统rootfs,它位于引导文件系统之上,rootfs可以是一种或多种操作系统(如Debian、Ubuntu)。

在传统的linux引导过程中,root文件系统会最先以只读的方式家长,当引导结束并完成完整性检查之后,他才会被切换成读写模式。但是Docker里,root文件系统永远只是只读状态,并且Docker利用联合加载(union mount)技术又会在root文件系统层上加载更多的只读文件系统。联合加载指的是一次同时加载多个文件系统,但是在外面看起来只能看到一个文件系统。联合加载会将各层文件系统叠加到一起,这样最终的文件系统会包含所有底层的文件和目录。

Docker将这样的文件系统成为镜像。一个镜像可以放到另一个京广线的顶部,位于下面的镜像称为父镜像(parent image),最底部的称为基础镜像(base image)。

简单来说,Docker 镜像就是一个只读的模板。例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。

镜像是Docker生命周期中的“构建”部分,可以用来创建 Docker 容器。

Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,可以当做容器的“源代码”,它体积很小,便于分享、存储、更新。用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

镜像是基于联合(union)文件系统的一种层式的结构,由一系列指令一步步构建处理。例如:

添加一个文件

执行一个命令

打开一个端口

当从以镜像期待容器时,Docker会在该镜像的最顶层加载一个读写文件系统。想在Docker中运行的程序就是在这个读写层中执行的。

列出镜像

docker images命令:

$ sudo docker images

在列出信息中,可以看到几个字段信息:

来自于哪个仓库,比如 ubuntu

镜像的标记,比如 14.04

它的 ID 号(唯一)

创建时间

镜像大小

其中镜像的 ID 唯一标识了镜像,注意到 ubuntu:14.04ubuntu:trusty 具有相同的镜像 ID,说明它们实际上是同一镜像。

TAG 信息用来标记来自同一个仓库的不同镜像。例如 ubuntu 仓库中有多个镜像,通过 TAG 信息来区分发行版本,例如12.0412.1013.0414.04 等。

下面的命令指定使用镜像 ubuntu:14.04 来启动一个容器。

$ sudo docker run -t -i ubuntu:14.04 /bin/bash

如果不指定具体的标记,则默认使用 latest 标记信息。

本地镜像都保存在Docker宿主机的/var/lib/docker目录下。每个镜像都保存在Docker所采用的存储驱动目录下。也可以在/var/lib/docker/containers目录下面看到所有的容器。

拉取镜像

使用docker run命令启动一个镜像时,Docker会检查本地是否存在该镜像。如果本地没有该镜像的话,就好链接官方维护的Docker Hub Registy,查看Docker Hub中是否有该镜像,有的话就下载下来。如果没有指定具体的镜像标签,则会下载latest标签的镜像。例如:

$ sudo docker run -i -t ubuntu /bin/bash

也可以通过pull命令预先拉取镜像到本地,可以节省从一个新镜像启动一个容器的世界。

拉取一个Fedora基础镜像的例子:

$ sudo docker pull fedora
查找镜像

docker search命令查找所有Docker Hub上公共的可用镜像:

$ sudo docker search puppet

返回了以下信息:

仓库名

镜像描述

用户评价(Stars)——反映镜像的受欢迎程度

是否官方(official)

自动构建(Automated)——表示这个镜像时由Docker Hub的自动构建流程(Automated Build)创建的。

也可以到Docker Hub网站上在线查找可用镜像。


【本人的学习笔记,主要是对《我的第一本Docker书》、《Docker —— 从入门到实践》的学习记录,引用了很多书上的话和例子,并结合其他各种资源的学习。我使用的是windows 7, docker 1.3.2。】

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26358.html

相关文章

  • Docker学习之路(三)小试牛刀

    摘要:运行容器使用命令启动容器。指定镜像时,会检查本地是否存在镜像。现在进入到容器中,这是一个完整的系统。除此之外,并没有其它的资源。本人的学习笔记,主要是对我的第一本书从入门到实践的学习记录,并结合其他各种资源的学习。 运行容器 使用run命令启动容器。 下面的命令输出一个 Hello World,之后终止容器: $ sudo docker run ubuntu:14.04 /bin...

    wizChen 评论0 收藏0
  • Docker学习之路(一)

    摘要:本人的学习笔记,主要是对我的第一本书从入门到实践的学习记录,并结合其他各种资源的学习,欢迎大牛们指点。最新的容器引入了容器如,容器不再仅仅是一个单纯的运行环境。镜像是基于联合文件系统的一种层式的结构,由一系列指令一步步构建处理。 本人的学习笔记,主要是对《我的第一本Docker书》、《Docker —— 从入门到实践》的学习记录,并结合其他各种资源的学习,欢迎大牛们指点。 容器简介 ...

    AWang 评论0 收藏0
  • Docker学习之路(六)用commit命令创建镜像

    摘要:邮件激活后,可以测试登录这条命令会完成登录,并将认证信息报错起来供后面使用。所以先用命令退出容器,再运行命令命令中,指定了要提交的修改过的容器的目标镜像仓库镜像名。提交的知识创建容器的镜像与容器的当前状态之间的差异部分,很轻量。 假期快要结束了,干点正事,接着Docker的学习。 构建镜像 构建镜像的两种方法: 使用docker commit 命令 使用docker build...

    KoreyLee 评论0 收藏0
  • Docker镜像仓库清理探索之路

    摘要:若要开启删除镜像功能,需要修改镜像仓库的配置文件。一个可行的解决办法是手动更改镜像仓库的配置,暂时禁止镜像的操作。 用友云开发者中心是基于Docker容器进行微服务架构应用的落地与管理。相信各位同学在使用的过程中,会发现随着Docker镜像的增多,占用磁盘空间也约来越多。这时我们需要清理私有镜像仓库中不需要的镜像。但在实际操作时,才会发现这本以为很简单的任务中却暗藏玄机,遇到了不少的麻...

    JouyPub 评论0 收藏0
  • 分钟快速了解Docker

    摘要:核心概念镜像镜像类似于虚拟机镜像。每个镜像包括了一个基本的操作系统环境容器容器类似于一个轻量级的沙箱,利用容器来运行和隔离应用。 这些是我的笔记,都是记录的核心概念和使用方法 showImg(https://segmentfault.com/img/bVbcOnO?w=1354&h=894); 概述 使用docker搭建开发环境将近1年了,自我感觉docker的强大并非如此,不过没有机...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<