Docker命令-容器的root文件系统(rootfs)命令

Docker commit 命令


docker commit 命令用于将容器的当前状态保存为一个新的 Docker 镜像。

docker commit 命令通常用于创建镜像来保存容器的状态,以便在将来可以重用或分发该镜像。

语法

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

OPTIONS说明:

  • -a :提交的镜像作者。

  • -c :使用 Dockerfile 指令来创建镜像。

  • -m :提交时的说明文字。

  • -p :提交镜像前暂停容器(默认为 true)。

将容器保存为新镜像:

docker commit my_container my_new_image

将名为 my_container 的容器保存为一个名为 my_new_image 的新镜像。

指定标签:

docker commit my_container my_new_image:latest

将容器保存为带有 latest 标签的镜像。

添加作者信息和提交信息:

docker commit -a “John Doe” -m “Added new features” my_container my_new_image

将容器保存为新镜像,并添加作者信息和提交信息。

在不暂停容器的情况下提交镜像:

docker commit --pause=false my_container my_new_image

在不暂停容器的情况下,将其保存为新镜像。

实例

启动一个容器:

docker run -d -it --name my_container ubuntu bash

进行一些更改:

1
2
docker exec my_container apt-get update
docker exec my_container apt-get install -y nginx

提交容器为新镜像:

docker commit -a “Your Name” -m “Installed nginx” my_container my_new_image

查看新镜像:

docker images

常用场景

  • 保存工作进度: 在开发或测试过程中,将容器的当前状态保存为镜像,以便稍后可以恢复。

  • 创建基础镜像: 为特定应用程序或环境配置创建自定义基础镜像。

  • 分发配置: 将特定配置或应用程序状态保存为镜像,以便分发给其他团队成员或在不同环境中使用。

docker commit 命令是一个强大的工具,允许用户将容器的当前状态保存为新的 Docker 镜像。通过使用该命令,用户可以创建自定义镜像,以便在将来重用或分发。添加适当的作者和提交信息,有助于跟踪镜像的历史和变化。

Docker cp 命令


docker cp 命令用于在 Docker 容器和宿主机之间复制文件或目录。

docker cp 命令支持从容器到宿主机,或从宿主机到容器的文件复制操作。

语法

1
2
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
  • SRC_PATH: 源路径(可以是容器内的路径或宿主机的路径)。

  • CONTAINER: 容器的名称或 ID。

  • DEST_PATH: 目标路径(可以是容器内的路径或宿主机的路径)。

从容器复制文件到宿主机

docker cp my_container:/path/in/container /path/on/host

将容器 my_container 内的 /path/in/container 文件或目录复制到宿主机的 /path/on/host。

从宿主机复制文件到容器

docker cp /path/on/host my_container:/path/in/container

将宿主机上的 /path/on/host 文件或目录复制到容器 my_container 内的 /path/in/container。

从容器复制目录到宿主机

docker cp my_container:/path/in/container /path/on/host

将容器内的 /path/in/container 目录及其内容复制到宿主机的 /path/on/host。

从宿主机复制目录到容器

docker cp /path/on/host my_container:/path/in/container

将宿主机上的 /path/on/host 目录及其内容复制到容器 my_container 内的 /path/in/container。

实例

容器复制文件到宿主机

启动一个容器并创建一个文件:

docker run -d --name my_container ubuntu bash -c “echo ‘Hello, Docker!’ > /hello.txt”

从容器复制文件到宿主机:

docker cp my_container:/hello.txt ./hello.txt

将容器内的 /hello.txt 文件复制到当前宿主机目录下。

查看复制的文件内容:

cat hello.txt

输出:

Hello, Docker!

从宿主机复制文件到容器

复制一个文件到容器:

docker cp ./hello.txt my_container:/hello.txt

将宿主机上的 hello.txt 文件复制到容器内的 /hello.txt。

进入容器查看文件内容:

docker exec -it my_container cat /hello.txt

输出:

Hello, Docker!

注意事项

  • docker cp 命令不会修改源文件或目录,它仅进行复制操作。

  • 目标路径必须是有效的路径,且宿主机或容器中应有足够的权限进行写入操作。

  • 在处理大文件或大目录时,复制操作可能需要一些时间。

docker cp 命令是 Docker 提供的一个有用工具,用于在容器和宿主机之间复制文件或目录。这个命令适用于备份、配置更新、日志收集等操作,帮助用户方便地管理和操作容器中的文件。

Docker diff 命令


docker diff 命令用于显示 Docker 容器文件系统的变更。它显示自容器创建以来,文件系统中发生的所有修改,包括添加、删除和修改的文件或目录。

docker diff 命令对于调试和理解容器的文件系统变化非常有用。

语法

docker diff CONTAINER

  • CONTAINER: 容器的名称或 ID。

docker diff 命令的输出包含以下三种类型的变更:

  • A: 表示新增的文件或目录。

  • D: 表示删除的文件或目录。

  • C: 表示修改过的文件或目录。

查看容器的文件系统变更

docker diff my_container

显示名为 my_container 的容器的文件系统变更。

实例

启动一个容器并修改文件系统:

docker run -d --name my_container ubuntu bash -c “echo ‘Hello, Docker!’ > /hello.txt && sleep 3600”

查看容器的文件系统变更:

docker diff my_container

输出示例:

A /hello.txt

此输出表示 /hello.txt 文件在容器文件系统中被新增了。

删除容器中的文件:

docker exec my_container rm /hello.txt

再次查看容器的文件系统变更:

docker diff my_container

输出示例:

D /hello.txt

此输出表示 /hello.txt 文件在容器文件系统中被删除了。

注意事项

  • docker diff 命令仅显示容器的文件系统变化,不显示容器内的其他状态信息(如运行的进程)。

  • 输出信息可能会因容器内文件系统的变化而不断变化,因此应在需要时及时查看。

docker diff 命令是一个强大的工具,用于显示 Docker 容器文件系统的变化。通过使用该命令,用户可以轻松查看和了解容器自创建以来所做的文件系统更改,有助于调试、审计和分析容器的行为。