你如何运行一个Docker容器,如果它不存在,或者如果它启动它?

例如,如果我有这样的运行命令:

docker run --name yo -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp ubuntu sh tmp.sh 

如果我再次运行它,它吐出这个错误:

来自守护进程的错误响应:冲突,名称已经分配给c23849234e。 您必须删除(或重命名)该容器才能将yo重新分配给容器。

它与docker启动虽然工作:

 docker start -ia yo 

所以我只想做一个或另一个。

简单的答案,使用shell || 操作。 所以如果run失败,它会start而不是:

 docker run --name yo -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp ubuntu sh tmp.sh || docker start -ia yo