Docker镜像使用详解

article/2025/3/12 13:13:54

目录

    • 基础命令
    • 使用进阶

容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟化的是操作系统而不是硬件。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。一次打包,到处运行。打的包就是容器镜像。
在这里插入图片描述

容器镜像是一个不可变的只读文件,基于相同镜像文件创建启动的容器,都将获得完全相同的Docker容器。容器是镜像的实例。
Docker Registry可以理解为仓库,用来统一存储所有创建好的镜像images。分为私有仓和公共仓。Docker Hub是Docker Inc.管理的公共仓,不过国内连接它比较慢。我们一般会使用国内的其它一些平台镜像仓库。这里管理了开发者上传的庞大的镜像集合。启动容器时,docker daemon会先尝试从本地获取镜像,如果本地不存在,则将从配置的Registry下载并保存到本地。相同的镜像会有不同的迭代版本,用tag区分。比如使用Docker部署openGauss中,openGauss的镜像就有很多迭代版本,从1.0.1 到3.0.0。所有迭代版本组成的镜像仓库又组成了Repository,比如恩墨创建的openGauss镜像enmotech/opengauss。
在这里插入图片描述

基础的几个命令就是正常的使用镜像,学会后就可以进行最基本的镜像操作,广泛应用于安装、运维。进阶的几个命令介绍镜像制作的相关命令,开发必备。

基础命令

1.查找镜像docker search
这个命令是从公共仓比如Docker hub搜索指定的image。语法:

docker search [OPTIONS] TERM

OPTIONS 里是可选项:
–filter,-f 根据提供的条件过滤输出
–limit 搜索返回的最大结果数。该值可以在 1 到 100 之间。默认值为–limit25。
–no-trunc不要截断输出
显示名称包含“java”、至少 30 星且是官方构建的镜像示例:

docker search --filter is-official=true --filter stars=30 java

2.拉取镜像docker pull
这个命令是将镜像包从远程仓库下载到本地。例如,下面的例子就是获取ubantu的镜像。如果不指定版本,就是默认使用最新的版本,即tag是latest。

[root@pekphisprb70593 software]# docker pull ubuntu 
Using default tag: latest 
latest: Pulling from library/ubuntu 
405f018f9d1d: Pull complete 
Digest: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7ac 
Status: Downloaded newer image for ubuntu:latest 
docker.io/library/ubuntu:latest

也可以指定具体版本,如《【云原生】使用Docker部署openGauss》中指定了opengauss的3.0.0版本。

3.列出镜像docker images
这个命令是列出本地存储的所有镜像,不管你用没用。

[root@pekphisprb70593 software]# docker images 
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE 
enmotech/opengauss   latest    e1ef1f097765   9 days ago    480MB 
ubuntu               latest    27941809078c   7 weeks ago   77.8MB 

它会显示REPOSITORY,TAG , IMAGE ID , CREATED , SIZE信息。

4.删除镜像docker rmi
这个命令是将不需要的镜像包删除,rm是remove,i表示image。使用的IMAGE ID即为上面docker images查出来的镜像ID,也可以使用镜像名称enmotech/opengauss:latest。

docker rmi IMAGE ID

注意,使用该命令删除的时候需要确保容器已经停止且删除。否则会提示报错“Error response from daemon: conflict: unable to delete xxx (cannot be forced) - image is being used by running container xxx”。正确的步骤就是删除停止的容器>删除未被使用的网络>删除镜像。也提供一种粗暴的参数 -f 表示force强制删除。

docker rmi -f IMAGE ID

5.查看镜像docker inspect
这个命令会以 json 格式得到 docker 镜像/容器的元数据。除了镜像ID也可以使用镜像名称。

docker inspect IMAGE ID

这时就可以和grep 联合使用,方便的获取想到的信息。grep会获取到其他的数据,不够完整或者有冗余,还得进一步处理,但是 -f 可以解决这个问题。例如 获取RootFS.Layers 节点的数据:

docker inspect -f ‘{{.RootFS.Layers}}’ e1ef1f09765

使用进阶

1.制作镜像docker build
语法:docker build [OPTIONS] PATH |URL
docker build命令从一个Dockerfile和context创建镜像。[OPTIONS]里是些可选参考,PATH 本地文件系统上的目录,URL是Git仓库的位置,构建时都包括他们的子目录。
示例:

docker build --force-rm=true --no-cache=true -t wxx/opengauss:3.0.0 -f /path/to/a/Dockerfile .

–force-rm :设置镜像过程中删除中间容器;
–no-cache:创建镜像过程中不使用缓存
-t:设置镜像名字及标签
-f:指定要使用的Dockerfile路径
注意,最后还有个 英文的点号. ,表示使用当前目录。
当然这个命令还支持许多其他参数,死记无益,可以实际使用时再行确认。新上手用户制作Dockerfile 以参考其他已有的,比如openGauss的。

2.推送镜像docker push
镜像制作完成后,如果希望不止在本地,可以使用docker push 推送到远程仓库,可以是公共仓dockerhub也可以是私有仓。注意,推送前需要先注册。
在这里插入图片描述

使用时,先登录再推送。

docker login 
--根据提示输入用户名和密码 
docker push repository:tag 

然后可以去dockerhub查看下是否推送成功了。

3.镜像打包docker image save和镜像加载docker image load
这俩成对使用,save是将一个或多个image保存为tar,load是将tar 文件恢复为image。这样从一个主机save,另一个主机load就完成了镜像的传输。

docker  image save enmotech/opengauss:latest -o /path/to/save/myimage.tar
docker  image load -i /path/myimage.tar

4.给镜像打新标记docker tag
这个命令就是基于本地的已有镜像重新建一个tag。在《【云原生】使用Docker快速部署openGauss主备环境》中我们就可以使用这个命令修改本地镜像的名字来匹配原有的安装脚本。

[root@pekphisprb70594 ~]# docker tag enmotech/opengauss:latest opengauss:latest 
[root@pekphisprb70594 ~]# docker images 
REPOSITORY           TAG       IMAGE ID       CREATED        SIZE 
enmotech/opengauss   latest    e6b31cb4b7b9   3 months ago   245MB 
opengauss            latest    e6b31cb4b7b9   3 months ago   245MB

这样就在不改变原有镜像enmotech/opengauss:latest的情况下,在本地新产生了个opengauss:latest的镜像。

5.清理无用镜像docker image prune
如果本地镜像有一些各种原因不再被容器使用或者未被tag标记的镜像,可以使用该命令一把清除。

docker image prune -a

prune 是英文修剪的意思,在docker中,不止可以清理镜像。还可以删除其他不再使用的docker对象。比如容器实例,网络、卷等。

docker container prune 
docker network prune 
docker volume prune

🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!


http://chatgpt.dhexx.cn/article/Jv5HKAnI.shtml

相关文章

docker镜像下载及docker镜像管理

文章目录 docker镜像下载镜像说明通外网主机上获取镜像官网上查看镜像的详细说明 镜像的命名方式镜像的重命名镜像的删除删除单个删除全部镜像 镜像的打包与解压包默认存放路径说明镜像打包【单个】镜像打包【多个】镜像解压 容器的导出和导入把容器导出为镜像镜像导入为容器 查…

Docker基础 - 仓库,镜像,容器详解

仓库,镜像,容器的关系 我们再回顾下仓库,镜像,容器的关系(这是官网的图) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NBtYxRyR-1683856218077)(null)] Docker 镜像 当运行…

Docker本地镜像推送到私有库

Docker Registry是官方提供的工具,可以用于构建私有镜像仓库 1. 下载镜像Docker Registry docker pull registy 2. 运行私有库Registry,相当于本地有个私有Docker hub docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileg…

docker镜像

docker镜像 文章目录 docker镜像1.镜像的概念2.docker镜像层3.docker存储驱动3.docker registry4.Docker Hub 1.镜像的概念 Docker镜像类似于虚拟机中的镜像,是一个只读的模板,也是一个独立的文件系统,包括运行容器所需的数据。 Docker镜像…

Docker入门教程:本地打包docker镜像

什么是Docker? Dockers是基于Go语言开发的虚拟容器技术。以前我们部署应用通常是将源代码打包成一个jar包运行,这样就会受到运行环境、配置环境的限制,而且程序也不能跨服务器运行。Docker基于Linux容器技术,将Java源代码、运行环…

Docker 镜像

(一)下载实例 (二)镜像基本操作 备注: 相同名称的镜像可以存在多个,即需要不同的tags版本 (三)使用 Dockerfile 定制镜像 (1)介绍 镜像的定制实际上就是定…

Docker (一)之docker镜像库地址

一、关于docker的镜像问题: 当我们想要去拉取一个镜像的时候,初始的时候会去从国外的镜像库里面拉取,速度可想而知;这时我们需要给docker配置一个国内的镜像库: 目前发现docker有2个地方可以配置镜像库的地址&#x…

Docker镜像发布到阿里云和私有库

目录 一、Docker镜像 (一)概述 (二)Docker镜像加载原理 (三)镜像分层结构优势 (四)重点理解 (五)docker commit操作实例 (六)总…

【云原生|Docker】Docker镜像操作

作者:柒号华仔 个人主页:欢迎访问我的主页 个人信条:星光不问赶路人,岁月不负有心人。 个人方向:主要方向为5G,同时兼顾其他网络协议,编解码协议,C/C,linux,云原生等&…

Docker私有镜像仓库是什么?

Docker镜像仓库概述 镜像仓库作为Docker技术的核心组件之一,其主要作用就是负责镜像内容的存储和分发。Docker镜像仓库从使用范围来说分为“公有镜像仓库”和“私有镜像仓库”,公有镜像仓库是可以被任何人使用的,例如Docker公司维护的在线存储…

了解和使用 Docker 镜像仓库

前言 在上文 《了解和使用 Docker》 之后,反响不错,也上了热榜。本来是想直接整理一下容器编排工具 Docker Swarm 和 K8s 博文的,但是半路杀出了这个活动😂,为表敬意,先参与一波吧。 本文主要介绍一下容…

Docker容器之镜像仓库详解

Docker容器之镜像仓库详解 文章目录 Docker容器之镜像仓库详解1. 什么是Docker Image?2. 什么是Docker Registry?3. 镜像相关的操作 本文将集中对镜像、仓库、容器的概念与三者之间的联系进行详细介绍,以及基本的镜像管理操作。 1. 什么是Docker Image&…

docker镜像仓库

一、docker镜像仓库 docker镜像仓库(repository)是集中存放镜像的地方。方便与后续的镜像拉取与上传,便于对镜像的集中管理。镜像仓库一般可分为Docker Hub公共中央仓库和个人或者公司使用的私有仓库,私有仓库如果是个人使用则可…

Docker -- 镜像仓库(搭建私有镜像仓库、向镜像仓库推送镜像、从镜像仓库拉取镜像)

文章目录 1. 镜像仓库1.1 镜像仓库概念 2. 搭建私有镜像仓库2.1.简化版镜像仓库(不推荐)2.2 带有图形化界面版本(推荐)2.2.1 配置Docker信任地址2.2.2 使用DockerCompose部署带有图象界面的DockerRegistry 3. 向镜像仓库推送镜像4…

最全经典 | 机器视觉基础知识汇总

人工智能的小白资源群,这里有最齐全的干货资源,可以和你一样的入门小白一同交流学习亦可以得到专业技术大神的指导。欢迎入群813416857(AI人工智能学习交流),785685380(机器学习技术交流群)&…

机器视觉光源知识总结(二)

更多文章请关注微信公众号:机器视觉专业论坛

机器视觉系统的搭建

对于许多新人来说能成功搭建一套完善的视觉系统是比较困难的,机器视觉包括了许多需要掌握的知识点、比产品选型:视觉软件、相机、光源、镜头。比如安装高度、视野大小、系统要求的运行时间、工作环境等等,对于新人来说需要一套完善的知识体系…

OpenCV与机器视觉

最近在网易云课堂把南科大于仕琪团队的OpenCV教程完整看了一遍,对图像处理或者机器视觉又有了一个系统性的理解。OpenCV中文网站就是他创建的,他的研究团队及其相应成果可以在个人网站中查阅。回想过去在图像处理方面的点点滴滴,做了一个详细…

机器视觉——车牌识别实验汇总

文章目录 前言一、车牌识别背景资料简介二、实现车牌识别步骤1.图像采集(Image Correction)2.角度修正(Angle Correction)3.字符分割 第一次分割4.车牌定位(License Plate Location)5.字符分割 第二次分割6…

机器视觉源码分享

视觉方面的研究,但毕业后未能再此领域深耕,故预将研究阶段所做的工业视觉程序进行分享,作为兴趣爱好愿与有识之人一起交流。 有需要的请留言,以下介绍均有源码 0cHM6Ly9ibG9nLmNzZG4ubmV0L01CU0VwZWVr,size_16,color_FFFFFF,t_70)…