为什么在Docker中创建仅数据容器时需要运行true命令?

425*_*esp 6 docker

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

$ sudo docker create -v /dbdata --name dbdata training/postgres /bin/true
Run Code Online (Sandbox Code Playgroud)

他们为什么要去/bin/true集装箱?如果我理解正确,我的仅数据容器永远不会运行,那么甚至是必要的吗?

koj*_*iro 5

没有必要运行该命令,但是现在Docker确实要求您指定要运行的命令(或至少是一个入口点).我想这是出于模式完整性的原因.以下命令将成功创建一个docker容器:

docker create -v /dbdata --name dbdata --entrypoint=_ scratch
Run Code Online (Sandbox Code Playgroud)

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

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

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