Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >docker commit和docker build制作镜像有什么区别

docker commit和docker build制作镜像有什么区别

原创
作者头像
玖叁叁
发布于 2023-04-26 02:28:48
发布于 2023-04-26 02:28:48
2.3K00
代码可运行
举报
文章被收录于专栏:玖叁叁玖叁叁
运行总次数:0
代码可运行

Docker是一种流行的容器化技术,可以在不同的环境中快速部署应用程序。Docker镜像是Docker容器的构建块,它包含了应用程序及其所有依赖项的完整副本。在Docker中,有两种常见的方式来创建Docker镜像,分别是使用docker commit和docker build命令。

Docker commit

docker commit命令允许用户创建新的镜像,该镜像基于已有的容器创建。它是通过保存容器的状态并创建一个新的镜像来实现的。docker commit命令的语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

其中,OPTIONS是可选参数,可以设置镜像的名称、标签、作者等属性。CONTAINER是要保存状态的容器的名称或ID。REPOSITORY是新镜像的名称,可以包含Docker Hub账户名和命名空间。TAG是新镜像的标签,可以为镜像添加版本号等信息。

以下是一个使用docker commit命令创建新镜像的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建一个新的容器
docker run -it --name myapp ubuntu:latest

# 在容器中安装应用程序
apt-get update && apt-get install -y python

# 退出容器
exit

# 保存容器状态并创建新的镜像
docker commit myapp myimage:latest

该示例创建了一个名为myapp的容器,并在其中安装了Python。接着,使用docker commit命令保存该容器的状态,并创建了一个名为myimage的新镜像。

使用docker commit命令创建镜像的主要优点是快速、简单和灵活。它适用于需要在现有容器上进行调试或快速构建镜像的场景。但是,由于docker commit命令是基于容器状态创建新的镜像,因此容器的历史记录和构建步骤可能会丢失。此外,如果多个容器基于同一个镜像进行构建,则每个容器可能会包含不同的依赖项和文件,这可能会导致构建过程中的一些问题。

Docker build

docker build命令是一种更为灵活和强大的构建镜像的方法,它基于Dockerfile创建新的镜像。Dockerfile是一种声明性的文本文件,包含了一系列指令和参数,用于构建Docker镜像。Dockerfile中的指令可以指定镜像的基础镜像、安装依赖项、复制文件、设置环境变量、暴露端口、运行命令等。

docker build命令的语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker build [OPTIONS] PATH

其中,OPTIONS是可选参数,可以设置镜像的名称、标签、构建上下文等属性。PATH是包含Dockerfile的目录或URL。docker build命令将读取Dockerfile中的指令并执行它们,最终构建一个新的镜像。

以下是一个使用Dockerfile创建新镜像的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockerfile

FROM ubuntu:latest

RUN apt-get update && apt-get install -y python

COPY . /app

WORKDIR /app

CMD ["python", "app.py"]

该示例Dockerfile指定了基础镜像为Ubuntu的最新版本,并安装了Python。接着,将当前目录下的所有文件复制到新的镜像中的/app目录下,并将工作目录设置为/app。最后,定义了一个CMD指令来启动应用程序。

使用docker build命令构建镜像时,可以通过-D选项指定构建参数,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker build -t myimage:latest --build-arg VERSION=1.0 .

该示例使用名称为myimage的标记创建了一个新的镜像,同时将当前目录下的所有文件作为构建上下文,并将变量VERSION设置为1.0。

与docker commit命令相比,使用Dockerfile构建镜像的主要优点是更可靠、可重复和可维护。Dockerfile中的指令和参数可以精确地指定构建镜像的每个步骤,包括基础镜像、依赖项、文件、环境变量和启动命令。此外,Dockerfile中的历史记录可以保留,并可用于构建缓存和镜像分层。这使得Dockerfile构建镜像更加高效和灵活。

总结

在Docker中,使用docker commit和docker build命令都可以创建新的镜像。docker commit命令适用于快速、简单和灵活的场景,可以基于现有容器状态创建新的镜像。而docker build命令则适用于更为灵活、可重复和可维护的场景,可以基于Dockerfile创建新的镜像。因此,在选择创建Docker镜像的方法时,应该根据实际需求和情况进行选择。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker之 - 使用镜像和仓库
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
cxuan
2019/08/20
1.1K0
详解Docker——你需要知道的Docker进阶知识二
镜像仓库(Repository)用于存放镜像,每个仓库都有唯一的地址,和网址类似。镜像仓库托管在某个 Registry,Registry 和GitHub类似。Docker 提供了一个官方的 Registry,官方 Registry 里的镜像仓库地址可以省去前面的域名前缀,其它 Registry 里的镜像仓库地址必须要指定域名前缀,以保证唯一性。
云原生
2021/05/31
8860
万字长文带你看全网最详细Dockerfile教程
Dockerfile是用于构建Docker容器镜像的文本文件,它包含了一系列指令和配置,用于描述如何组装一个Docker容器的环境。通过Dockerfile,你可以自动化地构建镜像,确保在不同的环境中都可以复现相同的容器。Dockerfile中的指令可以指定从哪个基础镜像开始构建、复制文件到镜像中、安装软件包、设置环境变量、暴露端口、运行命令等等。每个指令都会在镜像的构建过程中创建一个新的镜像层,这些层构成了最终镜像的结构。这种分层结构让镜像的构建更加高效,同时也方便了镜像的复用和共享。以下是一个简单的Dockerfile示例:
用户1107783
2023/09/11
11K2
万字长文带你看全网最详细Dockerfile教程
4 个超实用的 Docker 镜像构建技巧
最近做了一个好玩的工具,叫 xbin.io[1] 。其中有一项工作是为不同的工具来构建 Docker 镜像,让他们都运行在 Docker 中(实际上,是兼容 Docker image 的其他 sandbox 系统,没有直接用 Docker)。支持的工具越来越多,为了节省资源,Build 的 Docker image 就越小越好,文件越少,其实启动速度也会略微快一些,也会更安全一些。
一行Java
2023/02/23
7720
4 个超实用的 Docker 镜像构建技巧
《Docker极简教程》--Docker镜像--Docker镜像的创建和使用
当你基于 Dockerfile 创建镜像时,你需要编写一个描述镜像构建步骤的文本文件,该文件称为 Dockerfile。下面是一个简单的示例 Dockerfile 和相应的说明:
喵叔
2024/05/24
1.5K0
Docker实战(二):制作自己的Docker镜像
使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用 docker build 来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,包含一些如何创建镜像的指令。
拓荒者
2019/03/11
20.8K0
Kubernetes 最佳实践之精简 Docker 镜像
在生产环境中,往往需要精简容器镜像,即让 Dockerfile 构建出来的镜像体积足够小,本文介绍如何优雅的为 Docker 镜像瘦身。
imroc
2024/05/06
2180
Kubernetes 最佳实践之精简 Docker 镜像
万字长文:编写 Dockerfiles 最佳实践
Docker通过读取Dockerfile中的指令自动构建镜像,一个文本文件包含构建镜像的所有指令。Dockerfile遵循特定的格式和指令集,您可以在Dockerfile中引用它们。
崔庆才
2019/08/20
2.2K0
万字长文:编写 Dockerfiles 最佳实践
【重识云原生】第六章容器6.1.10节——DockerFile解析
        首先通过一张图来了解 Docker 镜像、容器和 Dockerfile 三者之间的关系。
江中散人_Jun
2022/09/30
1.5K0
【重识云原生】第六章容器6.1.10节——DockerFile解析
docker镜像介绍
Docker镜像可以通过名称和标记来唯一标识和访问。名称由两个部分组成,即仓库名和镜像名,用“/”分隔。标记是一个可选的字符串,用于标识镜像的版本。
玖叁叁
2023/04/26
6920
Docker系列-(2) 镜像制作与发布
上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布。
码老思
2023/10/17
6170
Docker系列-(2) 镜像制作与发布
《Docker极简教程》--Dockerfile--Dockerfile的基本语法
Dockerfile是一种文本文件,用于定义Docker镜像的内容和构建步骤。它包含一系列指令,每个指令代表一个构建步骤,从基础镜像开始,逐步构建出最终的镜像。通过Dockerfile,用户可以精确地描述应用程序运行环境的配置、依赖项安装、文件复制等操作。这使得应用程序的部署和分发变得更加可控和可重复。Dockerfile的内容可以根据需求自定义,允许开发者根据应用程序的特性和需求来灵活配置镜像的构建过程,从而实现高效、可靠的容器化部署。
喵叔
2024/05/24
3K0
锅总详解容器优化(一)
基础镜像如何选择?Dockerfile如何优化?CMD、ENTRYPOINT、ENV如何配合使用?容器的只读层、可读写层和init层有哪些内容?执行docker commit不会保存哪些内容?希望本文能带给您答案或一些思考!
锅总
2024/08/14
1260
锅总详解容器优化(一)
四个技巧,将 Docker 镜像体积减小 90%
优化 Docker 镜像可以提高构建速度、减少镜像大小、提高安全性和效率。以下是一些优化 Docker 镜像的方法:
用户1107783
2024/04/11
8780
四个技巧,将 Docker 镜像体积减小 90%
Docker 曲径通幽
早在第一篇介绍 Docker初次见面 中就对 Docker 的镜像有了说明和介绍,今天再详细的说一下。
李郑
2019/12/11
6790
Docker 曲径通幽
Docker使用笔记
我们的业务需要使用公司内部的一个平台做报表展示,公司内部的一个平台支持的数据库都是正式环境或者IDC环境,这使得我们的业务逻辑也需要部署到正式环境或者IDC环境。自从自研资源上云后,鹅厂内部使用IDC资源时不再推荐使用方单独申请IDC资源,而是推荐使用容器服务进行资源的申请和使用。具体来说,就是我们需要把我们的业务先在测试环境上使用docker做成镜像,再把镜像上传到镜像仓库,再从容器服务中把我们的镜像给启动起来。因此,我们就有了使用docker的诉求。
腾讯技术工程官方号
2024/04/12
3490
Docker使用笔记
Docker 入门——镜像
DockDocker 入门——镜像er 是一种流行的开源平台,可以让开发者和运维人员轻松地创建、部署和运行应用程序。Docker 的核心概念之一就是镜像,它是一个包含了应用程序代码、依赖库、配置文件和运行环境的可执行文件。使用 Docker 镜像,我们可以在任何支持 Docker 的机器上快速地启动一个容器,而不需要担心环境差异和兼容性问题。
奇零才子
2023/11/01
4840
翻新篇:Dockerfile
Dockerfile 是用来 构建 Docker 镜像 的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
看、未来
2022/05/28
7380
翻新篇:Dockerfile
Docker 镜像
Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。
traffic
2022/05/11
6.5K0
操作Docker镜像
一般来说,Docker使用一段时间后,系统中可能会遗留一些临时的镜像文件,以及一些没有使用的镜像,此时可以使用docker image prune命令来进行清理。
啃饼思录
2020/10/27
6760
相关推荐
Docker之 - 使用镜像和仓库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验