iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >教你如何从正在运行的容器创建 Docker 映像
  • 468
分享到

教你如何从正在运行的容器创建 Docker 映像

2024-04-02 19:04:59 468人浏览 泡泡鱼
摘要

Docker 容器通常是缺乏内部状态的临时应用程序实例。这是处理它们的最佳实践方法,可让您随时停止或重新启动容器。 但有时对容器文件系统的修改是不可避免的。也许您正在试用软件并希望

在这里插入图片描述

Docker 容器通常是缺乏内部状态的临时应用程序实例。这是处理它们的最佳实践方法,可让您随时停止或重新启动容器。

但有时对容器文件系统的修改是不可避免的。也许您正在试用软件并希望稍后返回快照。另一个用例可能是容器内的软件停止工作并且您希望保存一个副本以供将来调试的情况。

以下是如何从现有容器创建新的 Docker 映像。然后,您将能够从该映像启动另一个容器,该容器将填充第一个容器的文件系统。

提交容器

该docker commit命令用于获取容器并从中生成新图像。它适用于已停止或正在运行的容器。

基本语法如下:

docker commit example-container example-image:latest

这会从名为 的容器中创建一个图像example-container。如果您愿意,还可以通过 ID 识别容器。这两条信息都可以从docker ps列出主机上所有容器的输出中获得。

在这里插入图片描述

生成的图像被分配作为命令的第二个参数给出的标签。这example-image:latest在上面显示的示例中。就像常规的图像标记操作一样,如果新图像已经存在,它将替换标记的引用。

在这里插入图片描述

现在你可以使用你的镜像将文件系统从example-container一个新的容器实例中恢复:

docker run -d example-image:latest

文件系统内容将在命令执行example-container时与容器匹配有一个重要的警告:安装卷的内容将不包括在内,因此它们的安装位置在创建的容器映像中将是空的。要运行具有完整卷数据的新容器,请在使用启动第二个实例时使用标志从第一个容器重新附加卷。docker commit-vdocker run

另一个值得注意的症结是 Docker 如何处理正在运行的容器的提交。在大多数情况下,这应该可以无缝地工作,但它默认在创建提交之前暂停目标容器。镜像创建完成后容器内的所有进程都会暂停,然后再恢复。这提高了新映像中的数据一致性,但暂时无法访问容器。–pause false您可以通过包含在您的docker commit命令中来禁用此行为。

添加提交消息

该docker commit命令以与 git 等版本控制软件类似的方式支持提交消息。从容器创建映像时添加消息可让您记录更改的内容以及提交背后的原因。

使用–messageor-m标志来应用提交消息:

docker commit -m "Example commit" example-container example-image:latest

您也可以使用专用标志添加作者信息。将通用First Name email@example.com格式的字符串提供给–authoror-a标志。它将与提交消息一起保存。

docker commit -a "Example Author <example@example.com>" -m "Example commit" example-container example-image:latest

docker history当您使用该命令查看图像中的图层时,会显示提交消息。它们将显示在COMMENT最右侧的列中。

在这里插入图片描述

访问此信息的另一种方法是与从图像的 JSON 表示中提取作者身份和评论值docker inspect一起使用:grep

docker inspect <image-id> | grep 'Created\|Author\|Comment'

在这里插入图片描述

更改 Dockerfile 指令
提交一个镜像让你有机会改变它的一些 Dockerfile 指令。您可以在新图像中覆盖以下值:

  • CMD
  • ENTRYPOINT
  • ENV
  • EXPOSE
  • LABEL
  • ONBUILD
  • USER
  • VOLUME
  • WORKDIR

要设置指令,请使用–changeor-c标志:

docker commit --change 'ENTRYPOINT ["sh"]' example-container example-image:latest

您可以根据需要多次重复该标志以应用所有预期的更改。

仅支持影响最顶层文件系统层的指令。您无法通过 和 等指令无缝扩展已提交的图像与新RUN层COPY。但是,如果需要,您可以获取提交的结果并编写一个新的 Dockerfile 来添加新内容:

# Created via `docker commit`
FROM example-image:latest
RUN apt install example-package

如果您确实在提交时更改了 Dockerfile 指令,则值得添加一条提交消息来解释您正在修改的内容以及原因。这将帮助任何其他有权访问图像的人了解与创建图像的容器相比的任何行为差异。

概括
Docker 镜像通常由 Dockerfiles 构建并用于启动一次性容器。对容器文件系统状态的更改是通过重建镜像、销毁现有容器和启动新容器来实现的。在理想世界中,容器没有任何内部状态,但在实践中并非总是如此。

提交容器为您提供了一种在未来恢复其当前文件系统的方法。提交对于创建麻烦容器的副本很有用,因此您可以在单独的环境中进行调试,同时保持对先前生成的日志和临时文件的访问。

尽管容器提交通常感觉类似于 VM 快照,但它们并不完全相同。VM 控制虚拟硬件,并且该硬件的状态将出现在快照中。Docker 容器只是主机上运行的一组进程;提交是一个新的 Docker 映像,它代表容器的文件系统,但必然缺少有关进程、内核和硬件状态的任何数据。

到此这篇关于如何从正在运行的容器创建 Docker 映像的文章就介绍到这了,更多相关容器创建 Docker 映像内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 教你如何从正在运行的容器创建 Docker 映像

本文链接: https://www.lsjlt.com/news/139132.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 教你如何从正在运行的容器创建 Docker 映像
    Docker 容器通常是缺乏内部状态的临时应用程序实例。这是处理它们的最佳实践方法,可让您随时停止或重新启动容器。 但有时对容器文件系统的修改是不可避免的。也许您正在试用软件并希望...
    99+
    2024-04-02
  • Docker如何从容器的修改中创建镜像commit
    小编给大家分享一下Docker如何从容器的修改中创建镜像commit,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!从容器的修改中...
    99+
    2024-04-02
  • Docker如何创建运行多个mysql容器
    这篇文章主要介绍“Docker如何创建运行多个mysql容器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Docker如何创建运行多个mysql容器”文章能帮助大家...
    99+
    2024-04-02
  • 如何使用docker构建jenkins镜像并运行容器
    这篇文章主要讲解了“如何使用docker构建jenkins镜像并运行容器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用docker构建jenkins镜像并运行容器”吧!目录:1、基于...
    99+
    2023-06-19
  • 教你使用docker查看运行中的容器
    下面先给大家介绍下docker 如何查看运行中的容器,内容如下所示: 列出所有在运行的容器信息: docker ps [root@enlich01 ~]# docker ps CON...
    99+
    2024-04-02
  • docker容器中如何创建多个镜像
    要在Docker容器中创建多个镜像,您可以执行以下步骤: 在Docker容器中启动一个新的容器,并使用该容器作为构建环境。 在构建...
    99+
    2024-04-02
  • Docker容器的创建运行方式有哪些
    这篇文章主要介绍“Docker容器的创建运行方式有哪些”,在日常操作中,相信很多人在Docker容器的创建运行方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Dock...
    99+
    2024-04-02
  • 如何在 Docker 容器中运行 MySQL
    本指南逐步解释了如何在几分钟内设置在 Docker 容器中运行的新 MySQL 服务器。 Docker 的一大优点是您可以快速使用它来试用应用程序,而无需直接在您的机器上安装它。您可以使用 Docker 在容器中运行数据库,就像它是远程服务...
    99+
    2023-09-17
    python php 开发语言
  • Docker怎么查看正在运行的容器目录
    这篇文章主要介绍了Docker怎么查看正在运行的容器目录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker怎么查看正在运行的容器目录文章都会有所收获,下面我们一起来看看吧。起因为了方便操作服务器,大部分...
    99+
    2023-07-05
  • 创建的docker容器如何关闭
    这篇文章主要为大家展示了“创建的docker容器如何关闭”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“创建的docker容器如何关闭”这篇文章吧。以在Linux机器上为例,启动一个新的容器,可以...
    99+
    2023-06-03
  • 向正在运行的docker mysql容器中 导入sql文件
    当需要将 SQL 文件导入正在运行的 Docker MySQL 容器时,可以按照以下步骤操作。 步骤 1:复制 SQL 文件到容器中 首先,使用 docker cp 命令将 SQL 文件从本地主机复制...
    99+
    2023-10-20
    docker mysql sql
  • docker如何查看未运行的容器
    要查看未运行的容器,可以使用以下命令:1. 使用`docker ps -a`命令列出所有的容器,包括运行中和停止的容器。```she...
    99+
    2023-10-09
    docker
  • 一步步教你在Navicat上如何停止正在运行的MYSQL语句
    目录(一)前言(二)正文1. 图形化停止SQL2. 用SQL方式停止运行的SQL总结(一)前言 众所周知,Navicat是我们常用的连接mysql工具,非常方便好用。其实日常中,我们也常常会遇到运行时间很长甚至几乎跑不完...
    99+
    2023-03-09
    navicat停止mysql语句 navicat停止查询 navicat停止不了查询语句
  • Docker环境下将已运行的容器打包成新的镜像并运行在另一个服务器上的Docker容器中
    1、 查看当前运行的容器 1、使用root账户登录进入Linux系统中,键入docker ps命令。 2、打包容器为镜像包 1、正在运行的容器一行中CONTAINER ID一列下面的字符串就是容器id,复制想要打包的容器ID并执行dock...
    99+
    2023-08-19
    docker 服务器 运维
  • Docker如何使用exec命令从外部运行容器内的命令
    这篇文章将为大家详细讲解有关Docker如何使用exec命令从外部运行容器内的命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用exec命令从外部运行容器内的命令do...
    99+
    2024-04-02
  • 使用docker创建和运行跨平台的容器化mssql数据库
    目录1.开启虚拟化服务2.安装Docker desktop3.部署本地mssql数据库3.另外也能在Docker Desktop-Container查看刚刚创建的容器4.使用VS验证...
    99+
    2024-04-02
  • docker如何查看容器启动命令(已运行的容器)
    目录通过docker ps命令通过docker inspect命令总结eg: docker ps 查看正在运行的容器: 通过docker ps命令 该命令主要是为了详细展示查看运行...
    99+
    2023-02-22
    查看docker容器的启动命令 docker容器启动 docker启动容器命令
  • 怎么使用docker创建和运行跨平台的容器化mssql数据库
    今天小编给大家分享一下怎么使用docker创建和运行跨平台的容器化mssql数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-06-30
  • 如何获取未运行的 Docker 容器的退出代码
    php小编小新为您介绍如何获取未运行的Docker容器的退出代码。在使用Docker时,有时我们需要查看容器在退出时的退出代码以便进行故障排查或调试。然而,当容器未运行时,我们无法直接...
    99+
    2024-02-13
  • 你是否知道如何在Unix容器中运行Python和JavaScript?
    Unix容器是一种轻量级的虚拟化技术,它可以让开发者将应用程序打包成一个可移植的文件,并在不同的环境中运行。Python和JavaScript是两种非常流行的编程语言,它们广泛应用于Web开发、数据分析和人工智能等领域。本文将介绍如何在U...
    99+
    2023-10-12
    unix 容器 javascript
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作