如果它还不存在,你如何运行Docker容器,如果它存在则启动它?

Tra*_*der 13 docker

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

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

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

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

它适用于docker start:

docker start -ia yo
Run Code Online (Sandbox Code Playgroud)

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

Tra*_*der 21

简单的回答,使用shell || 操作.所以,如果run失败,它将start改为:

docker run --name yo -v $PWD:/usr/src/myapp -w /usr/src/myapp ubuntu sh tmp.sh || docker start -ia yo
Run Code Online (Sandbox Code Playgroud)