Docker 提交

Docker 是一种开源容器管理服务,也是 DevOps 最受欢迎的工具之一,在部署团队中很受欢迎。Docker 主要用于需要持续交付软件的敏捷项目。Docker 开源项目的创始人、首席技术官兼首席架构师是 Solomon Hykes。它由 Dotcloud 于 2013 年推出,自那时起,它就成为了世界领先的软件容器平台。有关使用 docker 及其docker 架构进行容器化的详细信息。

我们如何创建自己的定制Docker 镜像以及如何将它们推送到Docker 中心配置文件?将镜像推送到 docker 中心配置文件是一种很好的做法,因为您不必再​​次创建它,您可以将这些镜像拉取到您的系统和云中,所有工作都保存在其中。

创建 docker 镜像不是一项繁琐的任务。我们可以使用几个命令轻松创建 docker 镜像。根据创建镜像的用途,有两种创建 docker 镜像的方法。第一种方法是使用 commit 命令,另一种方法是使用Dockerfile 概念。了解有关 Docker 组件(即 Docker 镜像和Docker File)的更多详细信息。现在让我们开始使用 commit 命令创建我们自己的自定义 docker 镜像。在使用我们自己的 docker 镜像之前,我们应该首先在我们的操作系统

中设置和配置 docker 。要了解有关如何设置 docker 的更多信息,您可以参考如何安装 docker。成功安装后,让我们学习一些docker 命令

什么是 Docker Commit?

Docker Commit 镜像用于根据对 Docker 容器所做的更改创建新镜像。Docker Commit 可以将容器的当前状态以Docker 镜像的形式保存。以下是 Docker Commit 命令的语法。

句法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  • CONTAINER:Docker 容器的名称或 ID。

  • REPOSITORY:您要将 Docker 镜像推送到的存储库的名称。

  • 标记:标记新图像。

Docker Commit 的选项

以下是docker commit的选项:

选项 描述
-a, --author 规定图像的作者姓名
-c, --change Dockerfile指令应用于镜像
-m, --message 指定图像的提交消息
--pause 在提交期间暂停容器
-p, --pause-file 在提交期间使用暂停文件暂停容器
--platform 如果 Dockerfile 中未指定,则设置平台

Docker 提交的示例

以下是docker commit的一些示例:

  1. 使用默认设置
docker commit <container_id> <new_image_name>
  1. 提交时添加作者信息
docker commit -a "Author Name" <container_id> <new_image_name>
  1. 提交时添加提交信息
docker commit -m "Added new features" <container_id> <new_image_name>
  1. 提交并应用更改
docker commit --change="ENV DEBUG=true" <container_id> <new_image_name>

Docker Commit 与 Docker Push

以下是docker commit和docker push的区别:

Docker 提交 Docker Push
根据 Docker 容器中所做的更改创建一个新的 Docker 镜像 将图像构建推送到远程存储库。
允许捕捉容器的当前状态 它使图像可供多个用户使用。
例子:Docker 提交 GFG GFG-Updated:最新。GFG-Updated 是使用 GFG 容器的当前状态创建的。 例子: docker push GFG_Registry/GFG:latest GFG 图像被推送到 GFG_Registry。

Docker 提交相同的镜像

按照下面提到的步骤将更改提交到同一图像。

步骤 1:借助以下命令创建一个具有当前运行容器状态的新 docker 镜像。

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

Docker Commit With Tag

第 2 步:使用原始图像标记新图像名称并将其推送到远程存储库。

docker tag <Custom_image name>:latest <Orginal_Image Name>:latest

如何使用 Docker Commit?

可以使用 Docker commit 命令根据对现有容器的修改来生成新镜像。这是一种实用的技术,可以生成一个包含对容器所做的任何调整(例如添加新包或更改文件)的新镜像。

注意:使用 docker commit 我们可以从容器中创建一个镜像。

句法:

docker commit <containerId/Name> <imageName>

提交 Docker 镜像更改的步骤

现在我们将从现有的alex43/ubuntu-with-git:v1.0镜像创建我们自己的镜像,并根据我们的需求对其进行定制,然后上传它。

提交容器

步骤 1:拉取 Docker 镜像

第一步是像下图所示那样拉取镜像。使用命令将镜像拉取到系统中,如下所示。

docker pull alex43/ubuntu-with-git:v1.0   

docker pull

步骤2:部署容器

拉取镜像后,使用以下命令运行容器,其中“-it”标志指示 Docker通过分配链接到容器标准输入的伪 TTY 在容器中创建一个交互式bash shell。该命令会打开一个新容器,并将您带到一个新的]shell 提示符,以便您可以在其中开始工作。

docker run -it <Imagename/ImageID> bin/bash 

docker 运行

步骤3:修改容器

知道我们在容器中,我们可以安装所需的软件包或修改映像。在这里,我们将尝试安装Nmap 软件。在开始安装之前,使用以下命令检查该软件是否已安装。

nmap --version
  • 要安装 Nmap,请使用以下命令。
apt-get install nmap

运行容器

  • 安装完成后,再次确认软件已安装,如下例所示。然后退出容器。

版本

步骤 4:提交对图像的更改

  • 最后,使用下面显示的语法提交更改以生成新图像。使用容器 ID 并使用新标签标记新图像。
sudo docker commit [CONTAINER_ID] [new_image_name]  

 

docker ps 并提交

提交镜像后执行 docker image ls ,我们可以在这个列表中看到我们最近提交的镜像。

docker 镜像 ls

Docker Commit 命令的附加选项

第一个命令是pull命令。该命令将在几秒钟内下载/拉取完整的操作系统,具体取决于你的网络连接情况。语法如下:docker pull image_name。这里我拉取的是 alex43/ubuntu-with-git:v1.0,这是我自己定制的镜像。

docker pull alex43/ubuntu-with-git:v1.0
  • 第二个命令是运行命令,我们将使用它来运行拉取的图像。

  • 此命令将启动我的图像,我们将获得该图像的交互式 shell/终端。

  • 语法如下-it用于交互式终端,--name为启动的图像提供参考名称,然后是我的image_name

docker run -it --name myos alex43/ubuntu-with-git:v1.0
  • 创建我们自己的图像的第三个命令也是最重要的命令是commit命令。

  • 通过使用此命令,我们可以简单地使用现有镜像中所需的软件包来创建自己的镜像。语法如下:docker commit Nameof_RunningImage your_own_name: tag

docker commit myos ubuntu-basicbundle:v1.0
  • 第四个命令是tag命令。使用此命令,我们需要使用以下语法重命名镜像:username/image-name:tag。执行此命令之前,您需要在 Docker Hub 上创建一个帐户,并且必须提供与 Docker Hub 配置文件中相同的用户名。
docker tag alex43/ubuntu-with-git:v1.0 alex43/ubuntu-basicbundle:v1.0
  • 第五个命令是登录命令。通过此命令,我们将通过终端登录docker hub帐户,并需要将我们的docker镜像上传到docker hub配置文件。
docker login --username alex43 --password your_passwd
  • 第五个命令是push命令。通过使用此命令,我们可以将自己创建的docker镜像上传到docker hub配置文件,并可以通过pull命令在从本地系统到云端的任何地方使用它。
docker push alex43/ubuntu-basicbundle:v1.0

因此,这些是我们将在本教程中使用的概念的几个命令,我将上传一张新图片,以便你们能够更好地理解它。

Docker commit 和 Docker Save 之间的区别

以下是docker commit和docker save的区别:

特征 **docker commit** **docker save**
目的 根据容器的更改创建新镜像 将图像或存储库导出到 tar 存档
用例 将正在运行的容器中的更改捕获为新镜像 共享或备份 Docker 镜像或存储库
输出 Docker 镜像 包含图像层和元数据的 Tar 文件
命令示例 docker commit <container_id> <new_image_name> docker save -o <output_file>.tar <image_name>
主要焦点 从容器状态创建镜像 导出图像用于分发或备份

何时将新更改提交到新的容器镜像

将新的更改提交到新的容器镜像,这在容器化过程中非常有用,因为您可以将对容器所做的更改创建为镜像。提交新镜像的时机取决于以下几个因素:

  1. 修改已完成:在向容器镜像提交新的更改之前,请确保所做的修改完整且功能正常。如果提交的更改不足,最终可能会导致镜像无法正常运行或需要进行其他调整。

  2. 变更的一致性:确保对容器所做的更改稳定,并且在部署时不会导致任何问题至关重要。在对镜像进行修改之前,请严格测试容器,以确认其性能符合预期。

  3. 变更频率:如果您经常修改容器,那么更频繁地将变更提交到新的容器镜像可能更有意义。这可以减少出现问题时需要回滚修改的可能性,并确保每个新版本的容器都反映最新的变更。

总而言之,只有在容器镜像完全完成、稳定并经过适当测试后,才应提交新的更改。何时提交新的更改取决于更改的频率和部署工作流程。

结论

在本文中,我们讨论了 docker commit 命令的重要性,并提供了逐步说明和示例来说明如何使用它。docker commit 主要用于从正在运行的容器中提交镜像,我们在其中进行了一些修改,例如安装某些软件或在容器中添加任何变量。

Leave a Comment