How to execute a Bash command only if a Docker container with a given name does not exist?
You can check for non-existence of a running container by grepping for a <name>
and fire it up later on like this:
[ ! "$(docker ps -a | grep <name>)" ] && docker run -d --name <name> <image>
Better:
Make use of https://docs.docker.com/engine/reference/commandline/ps/ and check if an exited container blocks, so you can remove it first prior to run the container:
if [ ! "$(docker ps -q -f name=<name>)" ]; then if [ "$(docker ps -aq -f status=exited -f name=<name>)" ]; then # cleanup docker rm <name> fi # run your container docker run -d --name <name> my-docker-imagefi
I suppose
docker container inspect <container-name> || docker run...
since docker container inspect call will set $? to 1 if container does not exist (cannot inspect) but to 0 if it does exist (this respects stopped containers). So the run command will just be called in case container does not exist as expected.