linux - 'tar cv --files-from/dev/null | docker import - scratch' 是如何工作的?

标签 linux docker tar docker-registry docker-image

在学习 docker 以及如何创建最小镜像时,我遇到了这个命令:-

tar cv --files-from /dev/null | docker import - scratch

这将创建一个最小的 docker 镜像。

我无法理解当我们执行 tar cv --files-from/dev/null 时会发生什么。如果我在我的终端上运行这个命令,我没有得到任何输出。

如果我单独运行 docker import - scratch,它就会永远卡在那里。

那么这两个命令的组合是如何工作的呢?我仍然很困惑,这是如何工作的,并试图找出实际的工作方式,非常感谢对此的任何帮助/指导。

最佳答案

运行 tar cv --files-from/dev/null 实际上是生成输出;你只是看不到它。试试这个:

tar cv --files-from /dev/null | od -a

tar 命令生成一个空的 tar 存档。

docker import - scratch 命令从 stdin 导入一个 tar 存档并将其命名为 scratch。从手册页:

docker-import - Create an empty filesystem image and import the contents of the tarball (.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz) into it, then optionally tag it.

由于您向它提供了一个空存档,因此您会得到一个空的 Docker 镜像。

关于linux - 'tar cv --files-from/dev/null | docker import - scratch' 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36929469/

相关文章:

python - tar.extractall() 无法识别意外的 EOF

java - 为什么 Java 7 Files.walkFileTree 在遇到远程驱动器上的 tar 文件时抛出异常

linux - AWS 是否在 SSH 连接中保存客户端的 IP?

linux - 触摸命令。没有权限

php - 如何在没有 Drupal 容器的情况下安装 Drush

docker - 无法运行容器的启动脚本

python-3.x - 在 Python 3 中打开 tar 文件时出现 UnicodeDecodeError

php - 当我在 Raspberry pi 上单击网站中的链接时如何运行 espeak 命令

java - 基于列将两个文本文件映射为一个的有效方法

build - 构建Docker镜像时,包含文件的默认位置是什么?