Как вы можете запустить контейнер Docker, если он еще не существует, или запустить его, если это произойдет?

Например, если у меня есть команда запуска, например:

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

Если я запустил его снова, он выплюнул эту ошибку:

Ошибка ответа от демона: конфликт, имя yo уже назначено до c23849234e. Вы должны удалить (или переименовать) этот контейнер, чтобы возможность снова присваивать yo контейнеру.

Он работает с запуском докера, хотя:

docker start -ia yo

Поэтому я просто хочу сделать то или другое.

Ответ 1

Простой ответ, используйте оболочки || операция. Поэтому, если run не работает, вместо него будет start:

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