为什么在Docker中创build只有数据的容器时需要运行true命令?

我正在阅读一些Docker文档 ,我注意到他们在创build容器时传递了true命令。

 $ sudo docker create -v /dbdata --name dbdata training/postgres /bin/true 

为什么他们将/bin/true传递给容器? 如果我理解正确,我的数据专用容器从不运行,甚至有必要?

没有必要运行命令,但是现在Docker确实需要你指定一个命令来运行(或至less一个入口点)。 我想这是为了架构完整性的原因。 以下命令将成功创build一个docker容器:

 docker create -v /dbdata --name dbdata --entrypoint=_ scratch 

该容器可以用作卷容器,但永远不能运行。

也就是说,许多Docker实用程序(如Compose) 希望存在一个命令 ,因为它们将使用run ,而不仅仅是内部create

如果您想为DVC制作非常小的容器,请使用非常小的静态二进制文件,例如tianon / true 。