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

how does 'tar cv --files-from /dev/null | docker import - scratch' work?

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

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

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

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

如果我 运行 docker import - scratch 一个人,它就会永远挂在那里。

那么这两个命令的组合是如何工作的呢?我仍然很困惑,它是如何工作的,并试图找出实际的工作方式,任何关于此的 help/guidance 都将不胜感激。

运行 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 图片。