Docker学习笔记--镜像(上)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker学习笔记--镜像

镜像是Docker三大核心概念中最重要的一个,Dokcer运行容器钱需要本地存在对应的镜像,如果不存在对应的镜像,Doker 会先从默认的镜像仓库下载(如果用户不希望Docker从默认的镜像仓库下载镜像的话,可以使用自定义镜像仓库)。这篇文章将讲解镜像的拉取、查看镜像信息、搜索镜像、删除镜像和镜像的导入导出。


零、拉去镜像

要想拉取镜像,就要用到 pull 命令,该命令的语法为:

docker[image]pull NAME[:TAG]

注:pull 命令中参数 NAME 表示镜像仓库名称,TAG 表示镜像标签(一般表示为版本)


举个例子来看一下pull命令怎么使用。我们从默认的镜像仓库与拉取 Ubuntu 16.04,输入如下命令:

docker pull ubuntu:16.04

执行上面的命令,将会看到如下输出:

image.png

注1:如果不显示指定TAG,Docker默认使用latest标签,下载镜像仓库中最新的镜像


注2:latest标签会随着最新版本的变化而变化,例如昨天某镜像的版本是 1.0 ,今天上传了2.0版本的镜像,那么latest标签指的就是2.0这个版本


我们从前面的图中可以看到,在镜像下载过程中出现了4行,这四行代表着镜像文件有4个层,每层的唯一id就是每行开头的那串字符串(例如:35b42117c431)。当不同的镜像存在相同的层时,本地仅存出一份内容,这样就叫少了存储空间。


一般情况下,如果是从官方仓库注册服务器下载镜像文件时是不需要加上仓库注册服务器地址的,但是如果是从非官方仓库注册服务器下载的话,就需要加上注册服务器地址,例如我们要从阿里云下载ubuntu16.04的镜像,那么我们应该这样写命令:

docker pull registry.cn-shanghai.aliyuncs.com/ubuntu:16.04

常用的pull命令参数有如下两个:

image.png

一、查看镜像信息

查看镜像信息所用到的命令是 images 、 ls 和 inspect 命令。比如要查看当前电脑上存在的镜像,可以这么做:

docker images

或者

docker image ls

执行上面的命令,将会列出当前系统中存在的镜像,如下图

image.png

从上图中可以看出如下信息:

  • REPOSITORY:镜像来源
  • TAG:镜像标签,用于标记来自同一个仓库的不同镜像
  • IMAGE ID:镜像ID,镜像的唯一标识
  • CREATED:创建时间
  • SIZE:镜像大小


注1:镜像ID是很重要的信息,因为它是镜像的唯一标识,我们在操作镜像时需要用到它。一般情况下我们只会输入镜像ID的前N位就可以区分一个镜像了。


注2:镜像的大小只是代表了镜像的逻辑体积大小。由于相同镜像层在本地只会存储一份,因测镜像在物理上占用的空间小于各个镜像的逻辑体积之和。


images ls 命令常用的参数选项如下:

image.png

我们有时候需要获取镜像详细的信息,这时我们可以使用 inspect 命令,语法格式为:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

例如我们要查看刚才我们拉取的Ubuntu16.04镜像的详细信息,可以这么操作:

docker inspect 13c9

运行上面的命令后,我们会看到镜像的详细信息以json的形式打印出来,如图:

1.png

我们不仅可以查看镜像的详细信息,同样我们也可以查看层的详细信息,这时就需要用到 history 命令,语法如下:

docker history [OPTIONS] NAME|ID

例如我们查看Ubuntu16.04镜像层的详细信息:

docker history 13c9

运行命令,将打印出层的详细信息。

image.png

二、搜索镜像

我们可以使用 search 命令搜索仓库中的镜像,语法为:

docker search [option] keyword

option 常用的参数如下:

image.png

我们举个例子来看一下,我们要搜索仓库中包含mysql的镜像,代码如下:

docker search mysql

运行上面的命令,将会列出包含mysql关键字的镜像:

image.png

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
273 100
|
1月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
232 99
|
1月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
214 98
|
1月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
17天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
166 6
|
6月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1349 32
|
1月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
97 8
|
2月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
193 16
kde
|
3月前
|
Docker 容器 应用服务中间件
Docker 客户端是如何拉取镜像的?
Docker客户端拉取镜像的过程遵循Docker Registry HTTP API V2规范,主要分为解析镜像名、鉴权、获取Manifest、拉取Layers及本地合并五个步骤。它与Docker Hub、Harbor等仓库通信,确保镜像正确下载和构建。
kde
626 59
|
2月前
|
运维 关系型数据库 数据库
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
随着云原生发展,部署工具从 Bitnami 转向 Websoft9。后者基于官方镜像,提供多应用编排与统一运维,提升部署效率与维护能力,适合多系统协同场景。
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami