『 云原生·Docker』初识Docker镜像与Docker镜像操作(一)

这篇具有很好参考价值的文章主要介绍了『 云原生·Docker』初识Docker镜像与Docker镜像操作(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

本系列主要分为以下六大部分,正在更新中,尽请期待!

  • 『 云原生·生之门』
  • 『 云原生·前置知识』
  • 『 云原生·Docker』
  • 『 云原生·Kubernetes』
  • 『 云原生·KubeSphere』
  • 『 云原生·DevOps』

🚩点击关注本专栏


提示:已经更新的或正在更新的文章前面打勾了哈!


前言

镜像是Docker三大核心概念中最重要的,自 Docker诞生之日起镜像就是docker社区最为热门得关键词。

那么镜像为什么会有如此高的热度呢?

一、什么是镜像?

Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试先从默认镜像仓库下载(默认使用 Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。

常见的镜像仓库服务是Docker hub,但是也存在其他镜像仓库服务。拉取操作会将镜像下载到本地Docker主机,读者可以使用该镜像启动一个或者多个容器。

镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。

镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。

因为容器的设计初衷就是快速和小巧,所以镜像通常都比较小。

二、下载镜像

1. 拉取镜像

使用docker pull [OPTIONS] NAME[:TAG|@DIGEST]来拉取某个镜像

描述一个镜像需要包括“名称+标签”信息,如上,其中NAME是镜像仓库名称(用来区分镜像),TAG是镜像的标签(往往用来表示版本信息)。

对于 Docker镜像来说,如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新
版本的镜像。

一般来说,镜像的 latest标签意味着该镜像的内容会跟踪最新版本的变更而变化,内容是不稳定的。因此,从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest标记的镜像。

严格地讲,镜像的仓库名称中还应该添加仓库地址(即 registry,注册服务器)作为前缀,不添加的时候
默认使用的是官方 DockerHub服务。

docker pull ubuntu:18.04 命令相当于 docker pull registry.hub.docker.com/ubuntu:18.04命令,即从默认的注册服务器DockerHub registry中的ubuntu仓库下载标记为18.04的景象。

下载镜像到本地后,即可随时使用该镜像了,例如利用该镜像创建一个容器,在其中运行bash应用,执行打印"Hello World"命令。如下:

# 下载镜像
docker pull ubuntu:18.04

# 使用镜像创建一个容器
docker run -it ubuntu:18.04 bash

echo "Hello World"
exit

2. 镜像仓库

Docker镜像存储在镜像仓库服务( Image Registry)当中。 Docker客户端的镜像仓库服务是可配置的,默认使用 Docker hub,我这里配置的是阿里云的镜像仓库。

镜像仓库服务包含多个镜像仓库( Image Repository)同样,一个镜像仓库中可以包含多个镜像。

可能这听起来让人有些迷惑,所以下图展示了包含3个镜像仓库的镜像仓库服务,其中每个镜像仓库都包含一个或多个镜像。

『 云原生·Docker』初识Docker镜像与Docker镜像操作(一)

官方和非官方镜像仓库Docker hub也分为官方仓库( Official Repository)和非官方仓库(Unofficial Repository)

  1. 官方仓库中的镜像是由 Docker公司审查的。这意味着其中的镜像会及时更新由高质量的代码构成,这些代码是安全的,有完善的文档和最佳实践。

  2. 非官方仓库更像江湖侠客,其中的镜像不一定具备官方仓库的优点,但这并不意味着所有非官方仓库都是不好的!非官方仓库中也有一些很优秀的镜像,在信任非官方仓库镜像代码之前保持谨慎。说实话,在使用仼何从互联网上下载的软件之前,都要小心,甚至是使用那些来自官方仓库的镜像时也应如此。

三、查看镜像

使用 docker imagesdocker image ls命令可以列出本地主机上已有镜像的基本信息。

列出镜像的基本信息包括了以下内容:

  • 来自于哪个仓库,比如 ubuntu表示 ubuntu系列的基础镜像;
  • 镜像的标签信息,比如18.04、 latest表示不同的版本信息。标签只是标记,并不能标识镜像内容;
  • 镜像的ID(唯一标识镜像),如果两个镜像的ID相同,说明它们实际上指向了同一个镜像,只是具有不同标签名称而已;
  • 创建时间,说明镜像最后的更新时间;
  • 镜像大小,优秀的镜像往往体积都较小;

除此之外images还有很多得子命令,images子命令主要支持如下选项:

// 列出所有(包括临时文件)镜像文件,默认为否;
--all=true|false-a=true|false

// 列出镜像的数字摘要值,默认为否;
--digests=true|false

// 过滤列出的镜像,如dangling=true只显示没有被使用的镜像;也可指定带有特定标注的镜像等;
--filter=[]-f=[]

// 控制输出格式,如.ID代表I信息, .Repository代表仓库信息等
--format="TEMPLATE"

// 对输出结果中太长的部分是否进行截断,如镜像的ID信息,默认为是;
--no-trunc=true|false

// 仅输出ID信息,默认为否
--quiet=true|false-q=true|false

更多子命令可以通过man docker-images来查看。

使用docker inspect NAME[:TAG|@DIGEST]命令查看详细信息,如下:

docker inspect ubuntu:18.04

上面代码返回的是一个JSON格式的消息,如果我们只要其中一项内容时,可以使用-f来指定。
例如:获取镜像的 Architecture(软件结构)

docker inspect -f {{".Architecture"}} ubuntu:18.04

四、搜索镜像

使用 docker search [ option] keyword命令可以搜索镜像

支持的命令选项主要包括:

// 过滤输出内容
-f filter 或 --filter filter

//格式化输出内容
--format string

//限制输出结果个数,默认为25个
--limit int

//不截断输出结果
--no-trunc

示例:

//搜索官方提供的带nginx关键字的镜像
docker search --filter=is-official=true nginx

//搜索所有收藏数超过4的关键词包括 tensorfow的镜像
docker search --filter=stars=4 tensorflow

五、删除镜像

使用 docker rmi 或者 docker image rm 可以删除镜像。

当同一个镜像拥有多个标签的时候,docker rmi 命令只是删除了该镜像多个标签中的指定标签而已,并不影响镜像文件。

因此上述操作相当于只是删除了镜像的一个标签副本而已,但是如果只剩下一个标签就要小心了,此时会彻底删除镜像。

在删除的时候我们可以选择附带以下条件

// 强制删除镜像,即使有容器依赖它
-f 或 -force

//不要清理未带标签的父镜像
-no-prune

当使用 docker rmi命令,并且后面跟上镜像的ID时,会先尝试删除所有指向该镜像的标签,然后删除该镜像文件本身。

注意!当有该镜像创建的容器存在时,镜像文件默认是无法被删除的。

这时候如果想强行删除镜像,可以使用 -f 参数,如下:

docker rmi -f ubuntu:18.04

但是,我们通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。

正确的做法是,先删除依赖该镜像的所有容器,再来删除镜像。如下:

//首先删除容器a21c0840213e
docker rm a21c0840213e

//然后使用ID来删除镜像,此时会正常打印出删除的各层信息
docker rmi as2b1na12cna

六、清理镜像

使用 Docker一段时间后,系统中可能会遗留一些临时的镜像文件,以及一些没有被使用的镜像,可以通过 docker image prune 命令来进行清理。

支持选项包括:

// 删除所有无用镜像,不光是临时镜像;
-a 或 -all

// 只清理符合给定过滤器的镜像
-filter filter

// 强制删除镜像,而不进行提示确认。
-f 或 -force

看看本专栏文章有哪些吧!

本系列文章目录:

  • 『 云原生·生之门』
  • 『 云原生·前置知识』
  • 『 云原生·Docker』
  • 『 云原生·Kubernetes』
  • 『 云原生·KubeSphere』
  • 『 云原生·DevOps』

可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!

总结

镜像是使用 Docker的前提,也是最基本的知识。所以大家一定要熟练镜像得相关基本操作,在后续章节,笔者将继续介绍 Docker镜像的操作技巧。文章来源地址https://www.toymoban.com/news/detail-456314.html

到了这里,关于『 云原生·Docker』初识Docker镜像与Docker镜像操作(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识Docker:(7)查询Docker镜像的DockerFile

    我们知道了根据dockerfile来制作镜像,如果给你一个现成的镜像,你能逆向查看出dockerfile吗? 否则,你怎么知道该镜像使用的是CMD还是ENTRYPOINT ,使用的是shell格式还是CMD格式?由于格式决定了docker内部如何产生PID1进程,因此有必要逆向一下。 对于dockerfile,我们首先要有基本

    2024年02月12日
    浏览(44)
  • 【Docker】初识Docker以及Docker安装与阿里云镜像配置

    目录 一、初识Docker 二、安装Docker 三、Docker架构 四、配置Docker镜像加速器     Docker是一个开源的应用容器引擎,诞生于2013年,基于Go语言实现,dotCloud公司出品,Docker开源让开发者打包他们的应用以及依赖包到一个轻量级、可移值的容器中,然后发布到任何流行的Linux机器上

    2024年02月15日
    浏览(48)
  • 【Docker】初识 Docker,Docker 基本命令的使用,Dockerfile 自定义镜像的创建

    在部署大型项目时,常常面临多组件、复杂的依赖关系和不同环境之间的差异,这些因素可能导致以下问题: 复杂的依赖关系: 由于项目组件众多,各个组件之间的依赖关系变得复杂,容易出现版本不匹配或兼容性问题。 兼容性问题: 项目在不同的环境中可能会遇到兼容性

    2024年02月05日
    浏览(56)
  • 云原生Docker镜像管理

    docker是一个go语言开发的应用容器引擎。 ①运行容器里的应用; ②docker是用来管理容器和镜像的一种工具。 #容器 与 虚拟机 的区别? 容器 虚拟机 所有容器共享宿主机内核 每个虚拟机都有独立的操作系统和内核 使用namespace隔离资源,使用cgroup限制资源的最大使用量 完全隔

    2024年02月08日
    浏览(38)
  • 【云原生】Docker镜像的创建

    创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 (1)首先启动一个镜像,在容器里做修改  docker run -it --name web centos:7 /bin/bash     #启动容器  ​  yum install -y epel-release  #安装epel源  yum install -y nginx         #安装ng

    2024年02月03日
    浏览(40)
  • 【云原生丶Docker】Docker镜像常用命令大全

    镜像是Docker中最为核心也是最具创造性的概念!在理解Docker的核心概念文章中,我们理解了镜像的含义,下面让我们一起操作一些镜像,包括拉取、推送镜像等操作。 通过 docker image help 查看 Docker 支持的镜像命令有哪些。 通过 docker pull 命令拉取镜像。 镜像由镜像名字和标签

    2024年02月11日
    浏览(54)
  • 【云原生】Docker 详解(三):Docker 镜像管理基础

    镜像可以理解为应用程序的集装箱,而 Docker 用来装卸集装箱。 Docker 镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。 Docker 镜像采用分层构建机制,最底层为 bootfs ,其上为 rootfs 。 bootfs :用于系统引导的文件系统,包括 bootloader 和 kernel ,容

    2024年02月13日
    浏览(81)
  • 【云原生 | Docker篇】Docker镜像(image)与服务

    镜像是Docker的三大组件之一。 Docker运行容器前需要本地存在对应的镜像,如果本地不存在,Docker会从镜像仓库下载。 下面主要从以下几个方面来了解docker镜像: 从仓库获取镜像 管理本地仓库的镜像 Docker命令使用 获取命令行帮助信息直接在命令行内输入docker命令后敲回车

    2024年02月02日
    浏览(42)
  • 【云原生】Docker基本原理及镜像管理

    目录 一、Docker概述 1.1 IT架构的演进: 1.2 Docker初始 1.3 容器的特点 1.4 Docker容器与虚拟机的区别 1.5 容器在内核中支持2种重要技术 1.6 Docker核心概念 1)镜像 2)容器 3)仓库 二、安装Docker 2.1 Yum安装Docker 2.2 查看Docker信息 三、Docker的镜像管理命令 3.1 搜索镜像 3.2 获取镜像(下

    2024年02月12日
    浏览(37)
  • 【云原生】Docker镜像的创建,Dockerfile

    创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。  通过导入操作系统模板文件可以生成镜像,模板可以从OPENVZ 开源项目下载,下载地址为:   openvz.org/ Download/template/precreated  联合文件系统(UnionFS )  Union文件系统是

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包