docker基础(八)之docker commit,docker tag,docker cp,docker diff

news2024/12/28 19:25:18

文章目录

  • 概述
  • docker commit
    • 语法
    • OPTIONS说明:
    • docker commit --help
    • 实例
    • 使用场景
  • docker tag
    • 语法
    • 示例
    • 使用场景
    • 为什么要这样做呢?
  • docker cp
    • 语法
    • OPTIONS说明:
    • docker cp --help
    • 示例
  • docker diff
    • 语法
    • 示例
    • 使用场景:

概述

用于学习和记录,以下内容来自chatgpt3.5,网络等,补充例子。
本文介绍了docker commit,docker tag,docker cp,docker diff的基础用法,及相关options的详细解释和例子。

docker系列其他文章:docker专栏

docker commit

docker commit :从容器创建一个新的镜像。

语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :提交的镜像作者;
  • -c :使用Dockerfile指令来创建镜像;
  • -m :提交时的说明文字;
  • -p :在commit时,将容器暂停。
    PS: (因为docker commit是把容器当前状态提交为镜像快照,这个-p是提交快照的时候,把当前容器给暂停)

docker commit --help

在这里插入图片描述

实例

假设已经有一个正在运行的容器,其名称为my_container,想要将其保存为一个新的镜像。

首先,使用以下命令查找容器的ID或名称:

docker ps

在输出中,找到要创建镜像的容器的ID名称。假设它是my_container

运行以下命令来创建镜像:

docker commit my_container my_image:tag

在上述命令中,将my_container替换为要创建镜像的容器的ID或名称,my_image替换为想要为镜像设置的名称,tag是镜像的标签(可选)。

例如,要将容器my_container创建为名为my_image的镜像,可以运行以下命令:

docker commit my_container my_image

这将在本地Docker环境中创建一个新的镜像。

完成后,可以使用以下命令查看新创建的镜像列表:

docker images

在输出中,将看到刚刚创建的my_image镜像。

现在,已经成功地通过现有容器创建了一个新的镜像。

请注意,使用docker commit命令创建镜像时,将保存容器的当前状态作为快照。这包括容器中的文件、进程、网络设置等
但是,这种方式创建的镜像可能不够灵活和可重复 ,因为它们可能会包含不必要的或临时性的文件和状态。

如果需要更复杂和可重复的镜像构建过程,建议使用Dockerfile来定义镜像的构建步骤和配置。

使用场景

以下是一些docker commit命令的使用场景:

  • 自定义镜像:当对现有容器进行了一些定制化的修改,例如安装了特定软件包、调整了配置,希望将这些修改保存为一个新的镜像,这时就可以使用docker commit命令。
  • 实验和调试:在开发过程中,为了节省时间,可能会对容器进行一些实验性的修改或者调试。使用docker commit可以保存这些调试过程中的容器状态,方便后续查看或者分享
  • 创建快照镜像:当需要在特定时间点对容器的状态进行快照,以便稍后进行回滚或者比对容器状态时,可以使用docker commit命令。
  • 将容器状态保存为镜像:在CI/CD流程中,可能会遇到需要将特定步骤的容器状态保存为镜像的情况,通过docker commit可以方便地实现此目的。

总的来说,docker commit命令适用于需要将容器状态保存为新镜像以及定制化镜像的场景。这种方式可以帮助用户更轻松地管理和共享容器的特定状态。

docker tag

docker tag : 标记本地镜像,将其归入某一仓库。

语法

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

其中
SOURCE_IMAGE是要标记的源镜像的名称或ID。
TAG是可选的,用于指定镜像的标签。如果未指定标签,将使用默认的latest标签。
TARGET_IMAGE是目标镜像的名称或ID。

示例

  • 给现有的镜像添加标签:
docker tag my_image:latest my_image:1.0

这将为名为my_image的镜像添加一个名为1.0的标签。

  • 为镜像添加命名空间和标签:
docker tag my_image:latest my_registry/my_image:1.0

这将为名为my_image的镜像添加一个名为1.0的标签,并将其命名空间设置为my_registry。

  • 使用镜像ID进行标记:
docker tag 0123456789ab my_image:1.0

这将使用ID为0123456789ab的镜像添加一个名为1.0的标签。

  • 标记远程镜像:
docker tag my_image:latest my_registry/my_image:1.0

这将为名为my_image的本地镜像添加一个名为1.0的标签,并将其命名空间设置为my_registry,从而创建一个带有标签的远程镜像。

请注意,docker tag命令只是为镜像添加了一个新的标签,而不会创建新的镜像。标签只是对现有镜像的引用,可以更方便地引用和管理镜像。

使用场景

docker tag命令的使用场景包括:

  • 标记镜像版本:通过给镜像添加标签,可以方便地标识和管理不同版本的镜像。例如,可以为每个镜像版本添加一个唯一的标签,如1.0、2.0等。

  • 创建镜像别名:使用docker tag命令,可以为同一个镜像创建多个标签,从而创建镜像的别名。这样,可以使用不同的标签来引用同一个镜像,使得镜像在不同环境或用途中更易于识别和使用。

  • 上传镜像到私有仓库:如果使用的是私有的Docker镜像仓库,可以使用docker tag命令为镜像添加仓库的命名空间,并指定标签,然后使用docker push命令将镜像推送到私有仓库中。

  • 管理分支和发布:在开发过程中,可以使用docker tag命令为不同的代码分支创建不同的镜像标签。这样,可以轻松地在不同的环境中部署和测试不同的代码分支。

  • 复制镜像到其他环境:通过使用docker tag命令,可以为现有的镜像创建一个新的标签,并将其传输到其他环境中。这样,可以在不同的机器或服务器之间复制和使用相同的镜像。

总之,docker tag命令提供了一种方便的方式来管理和引用Docker镜像,使得在不同环境和用途中更加灵活和可控。

为什么要这样做呢?

在同一时间点给同一个镜像打多个标签通常是为了将同一版本的镜像在不同的场景中使用不同的标签。 这样可以使得镜像在不同环境中可以被更方便地调用和识别。

例如,假设我们有一个版本为1.0的镜像,我们可以给它打上以下标签:

docker build -t myapp:1.0 -t username/myapp:1.0 -t myapp:latest -t username/myapp:latest .

"myapp:1.0":用于在稳定的生产环境中使用;
"username/myapp:1.0":用于推送到远程仓库;
"myapp:latest":代表最新版本,在开发环境中可以使用;
"username/myapp:latest":代表最新版本,也用于推送到远程仓库。

这样做可以实现在单个构建过程中定义多个标签,并且确保它们都指向同一个镜像。这样做有助于提高镜像的灵活性、可维护性和适用性。

docker cp

docker cp :用于容器与主机之间的数据拷贝。

语法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

CONTAINER是要复制文件的容器名称或ID。
SRC_PATH是源文件或目录的路径。
DEST_PATH是目标文件或目录的路径。

docker cp命令用于在本地文件系统和运行中的Docker容器之间复制文件或目录。

OPTIONS说明:

-a, --archive:将文件或目录以归档模式复制,保留所有元数据和权限。
-L, --follow-link:跟随符号链接进行复制。

docker cp --help

在这里插入图片描述

示例

以下是一些示例:

  • 从容器复制文件到本地文件系统:
docker cp my_container:/app/logs/app.log /tmp/app.log

这将从名为my_container的容器中复制/app/logs/app.log文件到本地文件系统的/tmp/app.log路径。

  • 从容器复制整个目录到本地文件系统:
docker cp my_container:/app/logs/ /tmp/logs/

这将从名为my_container的容器中复制/app/logs/目录及其内容到本地文件系统的/tmp/logs/路径。

  • 将本地文件复制到容器:
docker cp /tmp/app.log my_container:/app/logs/app.log

这将从本地文件系统的/tmp/app.log文件复制到名为my_container的容器中的/app/logs/app.log路径。

  • 将本地目录复制到容器:
docker cp /tmp/logs/ my_container:/app/logs/

这将从本地文件系统的/tmp/logs/目录及其内容复制到名为my_container的容器中的/app/logs/路径。

  • -L 选项的使用
    当容器内有一个符号链接指向的目标文件时,我们可以通过以下示例来演示 -L 选项的使用:

假设容器内有一个符号链接 /app/link.txt,它指向文件 /app/data.txt。我们将使用 docker cp 命令将链接指向的目标文件复制到主机上的 /tmp 目录。

docker cp -L mycontainer:/app/link.txt /tmp

上述命令将复制容器内的 /app/link.txt 符号链接指向的文件 /app/data.txt 到主机上的 /tmp 目录。

请注意:

  • 如果不使用 -L 选项,只会复制符号链接本身,而不会跟随链接指向的目标文件。因此,如果不加 -L
    选项,上述命令将在主机上创建一个名为 link.txt 的文件,而不是复制链接指向的目标文件。

  • docker cp命令需要指定容器的名称或ID,并且必须在容器运行时才能复制文件**。此外,目标路径必须是容器内的绝对路径。

docker diff

docker diff命令用于查看容器内部文件系统的变化。它将显示容器中添加、修改或删除的文件和目录。

语法

docker diff [OPTIONS] CONTAINER

CONTAINER是要检查文件系统变化的容器名称或ID。

示例

  • 查看容器内部文件的变化:
docker diff my_container

这将显示名为my_container的容器中文件系统的变化列表。添加的文件和目录以A标记,修改的文件以C标记,删除的文件以D标记。

  • 监控容器内部文件的变化:

docker diff命令可以与其他命令结合使用,以监控容器内部文件系统的变化。例如,可以使用watch命令定期运行docker diff来实时监测文件的变化。

watch -n 1 "docker diff my_container"

这将每秒钟运行一次docker diff命令,并显示容器中文件系统的变化。

使用场景:

  • 调试容器:当遇到容器中文件系统相关的问题时,可以使用docker diff命令来查看文件的变化,以确定是否有意外的修改或删除操作。

  • 监测容器的行为:通过定期运行docker diff命令,可以监测容器内部文件系统的变化,以确保容器的行为符合预期。

  • 容器安全审计:使用docker diff命令可以检查容器中的文件变化,以进行安全审计。可以查看容器中添加或修改的文件,以确保没有未经授权的更改。

请注意,docker diff命令只能查看容器内部文件系统的变化,而不能对容器外部的文件系统进行操作。

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

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

相关文章

贪心算法入门

简介 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。也就是首先选取局部最优,从局部最优推出全局最优。 举例…

隐语笔记3 —— 隐语架构

隐语架构一览 隐语产品层 定位: 通过可视化产品,降低终端用户的体验和演示成本。通过模块化API降低技术集成商的研发成本。 人群画像: 隐私保护计算集成商,产品人员,隐私保护计算需求方,开发人员&#xff…

IDEA | 资源文件中文乱码问题解决

问题 IDEA打开资源文件,显示乱码问题。 解决方案 1、电脑是mac,点击IDEA->【Preferences】->【Editor】->【File Encodings】 2、选择【Properties Files】中的UTF-8,并勾选Transparent native-to-ascii conversion。 3、最后点击…

罗格朗逸景PLUS IOT智能系统发布,为您提供更智能的生活体验!

罗格朗全新推出的逸景PLUS IOT智能系统现已正式上市,采用纤薄纯平的设计,功能丰富全面,支持灯光/温度/场景控制、背景音乐等多种功能,整合罗格朗IOT2.0系统,集成可视对讲,为用户打造更舒适、安全的智能生活。 罗格朗智能家居 罗格朗是全球电气与智能建筑系统专家,创立于1865年…

QT tableWidget横向纵向设置

横向控件 要设置QTabWidget选项卡的字体方向,可以使用QTabWidget的setTabPosition()方法。通过传递Qt枚举值QTabWidget.east或QTabWidget.west作为参数,可以设置选项卡的字体方向为从左到右或从右到左。 myTabWidget QTabWidget() myTabWidget.setTabP…

基于python+vue的O2O生鲜食品订购flask-django-nodejs-php

近年来互联网络的迅猛发展和电子终端设备的普及,赋予了各行业充足的发展空间。微信小程序的O2O生鲜食品订购相比于传统信息技术,时效性是它最大的特色,已经在电子娱乐、经济等中发挥着举足轻重的作用。短时间内迅速扩大了线上管理系统的规模。…

牛,The O-one ——通过语音交互控制电脑的开源语言模型

模型介绍 The O-one :一个创新的开源语言模型计算机 可以让你通过语音交互来和你的计算机进行对话,完成询问、指令下达等任务。灵感居然来自Andrej Karpathy 的 LLM 操作系统。O1运行一个代码解释语言模型,并在计算机内核发生特定事件时调用…

机器学习——线性回归(头歌实训)

头歌机器学习实训代码、答案,如果能够帮到您,希望可以点个赞!!! 如果有问题可以csdn私聊或评论!!!感谢您的支持 目录 第1关:简单线性回归与多元线性回归 第2关&#…

【机器学习入门 】支持向量机

系列文章目录 第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 前言 支持向量机(Support Vector Machine) 于1995年发表,由于其优越的性能和广泛的适用性,成为机器学习的主流技术&…

在Linux/Debian/Ubuntu上通过 Azure Data Studio 管理 SQL Server 2019

Microsoft 提供 Azure Data Studio,这是一种可在 Linux、macOS 和 Windows 上运行的跨平台数据库工具。 它提供与 SSMS 类似的功能,包括查询、脚本编写和可视化数据。 要在 Ubuntu 上安装 Azure Data Studio,可以按照以下步骤操作&#xff1…

腾讯在GDC 2024展示GiiNEX AI游戏引擎现已投入《元梦之星》中开发使用,展示强大AIGC能力

在近日举行的GDC 2024游戏开发者大会上,腾讯揭开了其AI Lab团队精心打造的GiiNEX AI游戏引擎的神秘面纱。这款引擎依托先进的生成式AI和决策AI技术,为游戏行业带来了革命性的变革。 相关阅读:腾讯游戏出品!腾讯研效AIGC&#xff…

【测试开发学习历程】MySQL增删改操作 + 备份与还原 + 索引、视图、存储过程

前言: SQL内容的连载,到这里就是最后一期啦! 如果有小伙伴要其他内容的话,我会追加内容的。(前提是我有学过,或者能学会) 接下来,我们就要开始python内容的学习了 ~ ~ 目录 1 …

复旦大学MBA:iLab项目探寻科技创新 助力企业出海

2024年2月底,新一轮复旦MBA iLab商业咨询项目(以下简称iLab项目)正式拉开序幕。      科创大时代,如何于变局中创新突破、绘就商业“蓝图”?怎样把握ESG投资机遇,创造可持续发展的未来?如何…

云计算系统等保测评对象和指标选取

1、云计算服务模式与控制范围关系 参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图,主要是云计算系统安全保护责任分担原则和云服务模式适用性原则,指导后续的测评对象和指标选取。 2、测评对象选择 测评对象 IaaS模式 PaaS模式…

Sphinx + Readthedocs 避坑速通指南

博主在学习使用 Sphinx 和 Read the docs 的过程中, 碰到了许多奇葩的 bug, 使得很简单的任务花费了很长的时间才解决,现在在这里做一个分享,帮助大家用更少的时间高效上线文档的内容。 总的来说, 任务分为两个部分: …

C#、.NET版本、Visual Studio版本对应关系及Visual Studio老版本离线包下载地址

0、写这篇文章的目的 由于电脑的环境不同,对于一个老电脑找到一个适配的vscode环境十分不易。总结一下C#、.NET、Visual Studio版本的对应关系,及各个版本Visual Studio的下载地址供大家参考 1、C#、.NET版本、Visual Studio版本对应关系如下 2、Visua…

C++初阶:string类相关练习题

目录 1. 字符串相加2. 反转字母3. 字符串中唯一字母4. 字符串中最后一个单词5. 验证回文串6. 反转字符II7. 反转字符串中的单词8. 字符串相乘 1. 字符串相加 题目信息: 题目连接: 字符串相加 class Solution { public:string addStrings(string num1, s…

PHP自动获取视频时长的方法

摘要 最近在给客户开发短视频项目模块中遇到自动获取上传视频的时长并用于外部展示的需求。 刚开始想到用比较笨的方法,就是上传之前手动写入视频文件的大小,无奈嫌麻烦,寻求其它方法。 也是一个比较笨的方法—— ffmpeg 通过下载 ffmpeg&am…

vue的优缺点有那些 组件常用的有那些?

优点: 组件化开发,提升效率,方便复用,便于协同开发单页面路由易于结合其他的第三方库丰富的api方法轻量高效,虚拟DOMMVVM,数据驱动视图轻量级的框架 缺点: 缺少高阶教程和文档生态环境不如angular和re…

ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程

原文链接:ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598506&idx2&sn14f96667bfbeba5f51366a1f019e3d64&chksmfa82004dcdf5895bba2784ba10f6715f6f5e4c59c9b1…