'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 图片。
在学习 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 图片。