Docker-Image

Docker

  • Docker 镜像是什么
  • 为什么需要镜像
  • 镜像命令
    • 总览
    • docker images
    • docker tag
    • docker pull
    • docker push
    • docker rmi
    • docker save
    • docker load
    • docker image inspect
    • docker history
    • docker import
    • docker image prune
    • docker build

Docker 镜像是什么

  • Docker image 本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件

  • 我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器

  • image 里面是一层层文件系统(Union File System), 可以将几层目录挂载到一起, 形成一个虚拟文件系统. 每一层文件系统我们叫做一层 layer, 联合文件系统可以对每一层文件系统设置三种权限, 只读(readonly)、读写(readwrite)和写出(whiteout-able)

镜像相当于一个模板,可以很方便的构建出来不同的对象

🍂案例

在这里插入图片描述

为什么需要镜像

在部署应用时,通过手工或写一些脚本的方式进行部署。这样部署面临问题就是云端和本地环境一致问题。用户为每个应用打包过程比较繁琐,需要配置和修改等操作,非常费劲

然而,Docker 镜像就是为了解决这个小小的打包功能,突然一夜之间成名。那么,你可能说 Docker 镜像就是个压缩包,是的,你猜对了,它就像一个压缩包文件。它是如何解决 Paas 时代所面临的云端和本地一致性问题?很简单,它是把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样

Docker 最大的贡献就是定义了容器镜像的分层的存储格式,Docker 镜像技术的基础是联合文件系统(UnionFS),其文件系统是分层的。这样既可以充分利用共享层,又可以减少存储空间占用。Docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或与其他 Docker 用户公开共享

镜像命令

总览

commandaliasfunction
docker imagesdocker image ls / docker image list列出本地镜像
docker tagdocker image tag给镜像打标签, 可用于推送至镜像仓库
docker pulldocker image pull从镜像仓库拉取镜像
docker pushdocker image push推送镜像到仓库
docker rmidocker image rm / docker image remove删除本地镜像
docker builddocker image build通过 dockerfile 制作镜像
docker savedocker image save将指定镜像保存成 tar 归档文件
docker loaddocker image load导入使用 docker save 命令导出的镜像
docker image inspect查看镜像详细信息
docker historydocker image history查看镜像历史
docker importdocker image import从归档文件 docker export 中创建镜像
docker image prune删除不使用的镜像

docker images

  • 功能

    列出本地镜像

  • 语法

    docker images [OPTIONS] [REPOSITORY[:TAG]]

  • 别名

    docker image ls, docker image list

  • 参数

    • -a: 列出本地所有的镜像(含中间映像层, 默认情况下, 过滤掉中间映像层)
    • --digests: 显示镜像的摘要信息
    • -f: 显示满足条件的镜像
    • --format: 指定返回值的模板文件
    • --no-trunc: 显示完整的镜像信息
    • -q: 只显示镜像 ID

🍂样例

# 列出本地全部镜像
docker images# 列出本地镜像中 REPOSITORY 为 ubuntu 的镜像列表
docker images ubuntu

docker tag

  • 功能

    标记本地镜像, 将其归入某一仓库

  • 语法

    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

  • 别名

    docker image tag

🍂样例

# 给 ubuntu:22.04 镜像打标签
docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

docker pull

  • 功能

    从镜像仓库中拉取或者更新指定镜像

  • 语法

    docker pull [OPTIONS] NAME[:TAG|@DIGEST]

  • 别名

    docker image pull

  • 参数

    • -a: 拉取所有 tagged 镜像
    • --disable-content-trust: 忽略镜像的校验, 默认开启

🍂样例

# 拉取 nginx:1.23.3 镜像
docker pull nginx:1.23.3

docker push

  • 功能

    将本地的镜像上传到镜像仓库, 要先登录到镜像仓库

  • 语法

    docker push [OPTIONS] NAME[:TAG]

  • 别名

    docker image push

  • 参数

    • -a: 推送所有 tagged 镜像
    • --disable-content-trust: 忽略镜像的校验, 默认开启

🍂样例

# 推送 bibubibu/busybox:v1 镜像
docker push bibubibu/busybox:v1

docker rmi

  • 功能

    删除镜像

  • 语法

    docker rmi [OPTIONS] IMAGE [IMAGE...]

  • 别名

    docker image rm, docker image remove

  • 参数

    • -f: 强制删除
    • --no-prune: 不移除该镜像的过程镜像,默认移除

🍂样例

# 推送 bibubibu/busybox:v1 镜像
docker rmi nginx:stable

docker save

  • 功能

    将指定镜像保存成 tar 归档文件

  • 语法

    docker save [OPTIONS] IMAGE [IMAGE...]

  • 别名

    docker image save

  • 参数

    • -o: 输出到的文件

🍂样例

# 将 myimage:latest 镜像保存成了 myimage.tar 文件
docker save -o myimage.tar myimage:latest

docker load

  • 功能

    导入使用 docker save 命令导出的镜像

  • 语法

    docker load [OPTIONS]

  • 别名

    docker image load

  • 参数

    • --input, -i: 指定导入的文件, 代替 STDIN
    • --quiet, -q: 精简输出信息

🍂样例

# 将 myimage.tar 文件导入到本地镜像
docker load -i myimage.tar

docker image inspect

  • 功能

    查看镜像详细信息

  • 语法

    docker image inspect [OPTIONS] IMAGE [IMAGE...]

docker inspect 会自动检查是镜像还是容器然后显示相关信息

🍂样例

# 查看镜像详细信息
docker images inspect nginx:1.23.3

docker history

  • 功能

    显示镜像历史

  • 语法

    docker history [OPTIONS] IMAGE

  • 别名

    docker image history

  • 参数

    • -H , --human: 大小和日期采用人容易读的格式展现
    • --no-trunc: 显示全部信息, 不要隔断
    • -q, --quiet: 只显示镜像 id 信息

🍂样例

# 显示 nginx:1.25.3 镜像历史
docker history -H nginx:1.25.3

docker import

  • 功能

    从归档文件中创建镜像

  • 语法

    docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

  • 别名

    docker image import

  • 参数

    • -c: 应用 docker 指令创建镜像
    • -m: 提交时的说明文字

🍂样例

# 从 my_ubuntu_v3.tar 文件中创建了一个名为 bibubibu/ubuntu:v4 的镜像
docker import my_ubuntu_v3.tar bibubibu/ubuntu:v4

docker image prune

  • 功能

    删除不使用的镜像

  • 语法

    docker image prune [OPTIONS]

  • 参数

    • -a , --all: 删除全部不使用的镜像
    • --filter: 指定过滤条件
    • -f, --force: 不提示是否删除

🍂样例

# 删除所有没有被已有容器使用的镜像
docker image prune -a

docker build

  • 功能

    用于使用 Dockerfile 创建镜像

  • 语法

    docker build [OPTIONS] PATH | URL | -

  • 参数

    • --build-arg=[]: 设置镜像创建时的变量
    • -f: 指定要使用的 Dockerfile 路径
    • --label=[]: 设置镜像使用的元数据
    • --no-cache: 创建镜像的过程不使用缓存
    • --pull: 尝试去更新镜像的新版本
    • --quiet, -q: 安静模式, 成功后只输出镜像 ID
    • --rm: 设置镜像成功后删除中间容器
    • --tag, -t: 镜像的名字及标签, 通常为 name:tag 或者 name 格式; 可以在一次构建中为一个镜像设置多个标签
    • --network: 默认 default. 在构建期间设置 RUN 指令的网络模式

🍂样例

# 使用 Dockerfile 创建了一个名为 myimage:tag 的镜像
docker build -t myimage:tag

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 年 5 个 Linux 开源数字化学习平台

与其他行业一样,教育界多年来一直在经历数字化转型的过程。随着数字化学习平台的建立,目前只要能上网,任何人都可以接受教育。 “e-learning”一词的意思是“数字化学习”,是当今最常用的词之一。 它指的是通常在互联网上进行的培…

一文带你弄懂JVM与JAVA体系结构

文章目录 1.JVM 与 Java 体系结构1.1. 前言1.2. 一些参考书目1.3. Java 及 JVM 简介1.4. Java 发展的重大事件1.5. 虚拟机与 Java 虚拟机1.6. JVM 的整体结构1.7. Java 代码执行流程1.8. JVM 的架构模型1.9. JVM 的生命周期 1.JVM 与 Java 体系结构 1.1. 前言 作为 Java 工程…

带有GUI界面的电机故障诊断(MSCNN-BILSTM-ATTENTION模型,TensorFlow框架,有中文注释,带有六种结果可视化)

本次创作最主要是在MSCNN-BILSTM-ATTENTION模型(可轻松替换为其它模型)基础上,搭建GUI测试界面,方便对你想要测试的数据的进行测试,同时进行了全面的结果可视化:1.训练集和测试集的准确率曲线,2…

NIO简介以及用NIO实现一个群聊系统

一、BIO的工作原理 传统Io(BIO)的本质就是面向字节流来进行数据传输的 ①:当两个进程之间进行相互通信,我们需要建立一个用于传输数据的管道(输入流、输出流),原来我们传输数据面对的直接就是管道里面一个个字节数据的流动(我们弄了一个 by…

Git原理及使用

1、Git初识 Git是一种版本控制器: 对于同一份文件,做多次改动,Git会记录每一次改动前后的文件。 通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 注意: Git其实只能跟踪⽂本⽂件的改动,⽐如TXT⽂件,⽹⻚,所有的程序代码…

RabbitMQ之Plugins插件----AMQP对接MQTT

1.启用插件 rabbitmq-plugins enable rabbitmq_mqtt 2.检查是否启动成功,打开rabbitmq后台 3.概念: AMQP是由交换器和queue队列组成的消息队列机制,MQTT是由订阅主题组成的消息机制 1.MQTT创建连接时会向rabbitmq创建一个自己的queue&…

内网横向移动小结

windows Windows-Mimikatz 适用环境: 微软为了防止明文密码泄露发布了补丁 KB2871997,关闭了 Wdigest 功能。当系统为 win10 或 2012R2 以上时,默认在内存缓存中禁止保存明文密码,此时可以通过修改注册表的方式抓取明文&#xff…

总结 | vue3项目初始化(附相应链接)

如何运行 vue 项目:vscode运行vue项目_vscode启动vue项目命令-CSDN博客 vue3项目搭建 目录管理 git管理:vue3项目搭建并git管理_git 新建vue3项目-CSDN博客 目录调整:vue3项目 - 目录调整-CSDN博客 vscode中快速生成vue3模板&#xff1a…

基于ssm高校专业信息管理系统设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校专业信息管理混乱,出错率高,信息安全性差…

3.23项目:聊天室

1、 基于UDP的网络聊天室 项目需求: 如果有用户登录,其他用户可以收到这个人的登录信息如果有人发送信息,其他用户可以收到这个人的群聊信息如果有人下线,其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器 #inc…

一、SpringBoot基础搭建

本教程主要给初学SpringBoot的开发者,通过idea搭建单体服务提供手把手教学例程,主要目的在于理解环境的搭建,以及maven模块之间的整合与调用 源码:jun/learn-springboot 以商城项目为搭建例子,首先计划建1个父模块&…

Wireshark TS | DNS 案例分析之外的思考

前言 承接之前一篇《Packet Challenge 之 DNS 案例分析》,在数据包跟踪文件 dnsing.pcapng 中,关于第 4 题(What is the largest DNS response time seen in this trace file? )的分析过程中曾经碰到一个小问题,主要…

MySQL数据库-MySQL基础-下篇-函数、约束、多表查询、事务

文章目录 函数一、字符串函数练习 二、数值函数三、日期函数四、流程函数总结 约束概述约束演示外键约束概念语法删除/更新行为 总结 多表查询多表关系一对多(多对一)多对多一对一 多表查询概述内连接外连接自连接*联合查询-union, union all子查询标量子…

一文读懂IP地址

IP地址(Internet Protocol Address)是指互联网协议地址,是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址的主要特点是具有唯一性&#xff…

AbstractQueuedSynchronizer 独占式源码阅读

概述 ● 一个int成员变量 state 表示同步状态 ● 通过内置的FIFO队列来完成资源获取线程的排队工作 属性 AbstractQueuedSynchronizer属性 /*** 同步队列的头节点 */private transient volatile Node head;/*** 同步队列尾节点,enq 加入*/private transient …

【XR806开发板试用】使用PWM模块模拟手机呼吸灯提示功能

一般情况下,我们的手机在息屏状态,当收到消息处于未读状态时,会有呼吸灯提醒,这次有幸抽中XR806开发板的试用,经过九牛二虎之力终于将环境搞好了,中间遇到各种问题,在我的另一篇文章中已详细描述…

面试算法-82-不同路径

题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? …

MySQL (1)

目录 一、数据库的基本概念 1.1 数据 (Data) 1.2 表 1.3 数据库 2 数据库管理系统 3 数据库系统 二、数据库发展史 关于第三代数据库 三、关系型数据库 当今主流数据库介绍 关系数据库应用 四、非关系数据库介绍 五、MySQL数据库介绍 MySQL商业…

redis和rabbitmq实现延时队列

redis和rabbitmq实现延时队列 延迟队列使用场景Redis中zset实现延时队列Rabbitmq实现延迟队列 延迟队列使用场景 1. 订单超时处理 延迟队列可以用于处理订单超时问题。当用户下单后,将订单信息放入延迟队列,并设置一定的超时时间。如果在超时时间内用户…

网络编程套接字——实现简单的TCP网络程序

目录 1、TCP socket API详解 socket(): bind(): listen(): accept(): connect(): 2、简易的TCP网络程序 TcpServer.hpp TcpClient.cc Main.cc Log.hpp ThreadPool.hpp Task.hpp Init.hpp Daemon.hpp dict.txt Makefile 1、TCP socket A…