Wait for containers to be removed before removing images 87/5287/5
authorjose.lausuch <jose.lausuch@ericsson.com>
Sat, 26 Dec 2015 20:55:45 +0000 (21:55 +0100)
committerjose.lausuch <jose.lausuch@ericsson.com>
Sun, 27 Dec 2015 16:52:49 +0000 (17:52 +0100)
This will avoid some errors like this:
"Error response from daemon: conflict: unable to delete
44c2887519de (must be forced) - image is being used by
stopped container 7dbed6d40e5a"

Change-Id: I54b8b76fbcc6f208ab52c88b43ea18af935e69c7
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
jjb/opnfv/opnfv-docker.sh

index 6f0a0c3..d65603f 100644 (file)
@@ -12,8 +12,18 @@ echo
 # Remove previous running containers if exist
 if [[ ! -z $(docker ps -a | grep $DOCKER_REPO_NAME) ]]; then
     echo "Removing existing $DOCKER_REPO_NAME containers..."
-    docker ps | grep $DOCKER_REPO_NAME | awk '{{print $1}}' | xargs docker stop
-    docker ps -a | grep $DOCKER_REPO_NAME | awk '{{print $1}}' | xargs docker rm
+    #docker ps | grep $DOCKER_REPO_NAME | awk '{{print $1}}' | xargs docker stop
+    docker ps -a | grep $DOCKER_REPO_NAME | awk '{{print $1}}' | xargs docker rm -f
+    t=60
+    # Wait max 60 sec for containers to be removed
+    while [ $t -gt 0 ]; do
+        ids=$(docker ps | grep $DOCKER_REPO_NAME |awk '{{print $1}}')
+        if [[ -z $ids ]]; then
+            break
+        fi
+        sleep 1
+        let t=t-1
+    done
 fi
 
 
@@ -24,7 +34,7 @@ if [[ ! -z $(docker images | grep $DOCKER_REPO_NAME) ]]; then
     image_tags=($(docker images | grep $DOCKER_REPO_NAME | awk '{{print $2}}'))
     for tag in "${{image_tags[@]}}"; do
         echo "Removing docker image $DOCKER_REPO_NAME:$tag..."
-        docker rmi $DOCKER_REPO_NAME:$tag
+        docker rmi -f $DOCKER_REPO_NAME:$tag
     done
 fi
 
@@ -36,7 +46,7 @@ if [[ "$UPDATE_LATEST_STABLE" == "true" ]]; then
         echo "ERROR: The image $DOCKER_REPO_NAME with tag $STABLE_TAG does not exist."
         exit 1
     fi
-    docker tag $DOCKER_REPO_NAME:$STABLE_TAG $DOCKER_REPO_NAME:latest_stable
+    docker tag -f $DOCKER_REPO_NAME:$STABLE_TAG $DOCKER_REPO_NAME:latest_stable
     echo "Pushing $DOCKER_REPO_NAME:latest_stable ..."
     docker push $DOCKER_REPO_NAME:latest_stable
     exit 0