summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
8e98caa)
Docker image building script opnfv-docker.sh tries to remove existing
images before and after building. It simply uses grep to matching image
names, which may cause partial name matching problems.
Ex. opnfv/compass-tasks will match both opnfv/compass-tasks and
opnfv/compass-tasks-base, and may lead to accidentally removing of
images still in use when several building tasks run concurrently.
Error log:
https://build.opnfv.org/ci/job/compass-tasks-build-arm64-master/6/console
Change-Id: I1a83f801c5e0cc889cd9e17b8d1b4d895f1f68a9
Signed-off-by: Yibo Cai <yibo.cai@arm.com>
function remove_containers_images()
{
# Remove previous running containers if exist
function remove_containers_images()
{
# Remove previous running containers if exist
- if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
+ #
+ # $ docker ps -a
+ # CONTAINER ID IMAGE COMMAND ...
+ # 6a796ed40b8e opnfv/compass-tasks:latest "/bin/bash" ...
+ # 99fcb59f4787 opnfv/compass-tasks-base:latest "/bin/bash" ...
+ # cc5eee16b995 opnfv/compass-tasks-k8s "/bin/bash" ...
+ #
+ # Cut image name by leading space and ending space or colon(tag)
+ if [[ -n "$(docker ps -a | grep " $DOCKER_REPO_NAME[ :]")" ]]; then
echo "Removing existing $DOCKER_REPO_NAME containers..."
echo "Removing existing $DOCKER_REPO_NAME containers..."
- docker ps -a | grep $DOCKER_REPO_NAME | awk '{print $1}' | xargs docker rm -f
+ 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
t=60
# Wait max 60 sec for containers to be removed
- while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep $DOCKER_REPO_NAME)" ]]; do
+ while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep " $DOCKER_REPO_NAME[ :]")" ]]; do
# Remove existing images if exist
# Remove existing images if exist
- if [[ -n "$(docker images | grep $DOCKER_REPO_NAME)" ]]; then
+ #
+ # $ docker images
+ # REPOSITORY TAG IMAGE ID ...
+ # opnfv/compass-tasks latest 6501569fd328 ...
+ # opnfv/compass-tasks-base latest 8764fe29c434 ...
+ # opnfv/compass-tasks-k8s latest 61094cac9e65 ...
+ #
+ # Cut image name by start of line and ending space
+ if [[ -n "$(docker images | grep "^$DOCKER_REPO_NAME ")" ]]; then
echo "Docker images to remove:"
echo "Docker images to remove:"
- docker images | head -1 && docker images | grep $DOCKER_REPO_NAME
- image_ids=($(docker images | grep $DOCKER_REPO_NAME | awk '{print $3}'))
+ docker images | head -1 && docker images | grep "^$DOCKER_REPO_NAME "
+ image_ids=($(docker images | grep "^$DOCKER_REPO_NAME " | awk '{print $3}'))
for id in "${image_ids[@]}"; do
for id in "${image_ids[@]}"; do
- if [[ -n "$(docker images|grep $DOCKER_REPO_NAME|grep $id)" ]]; then
+ if [[ -n "$(docker images|grep "^$DOCKER_REPO_NAME "|grep $id)" ]]; then
echo "Removing docker image $DOCKER_REPO_NAME:$id..."
docker rmi -f $id
fi
echo "Removing docker image $DOCKER_REPO_NAME:$id..."
docker rmi -f $id
fi