Skip to content

Instantly share code, notes, and snippets.

@pangkalizer
Created March 8, 2016 01:25
Show Gist options
  • Save pangkalizer/28361e466315e3ed32f7 to your computer and use it in GitHub Desktop.
Save pangkalizer/28361e466315e3ed32f7 to your computer and use it in GitHub Desktop.
update docker image with squash
#!/bin/bash
# Syntax: update_image <CONTAINER_NAME> <IMAGE_REPO>
CONTAINER_NAME="$1"
IMAGE_REPO="$2"
if [ "$CONTAINER_NAME" = "" ]; then
echo "Error: Missing container name"; exit 1;
fi
if [ "$IMAGE_REPO" = "" ]; then
echo "Error: Missing image repo name"; exit 1;
fi
OLD_IMAGE_ID="$(docker images | grep ${IMAGE_REPO} | awk '{print $3}')"
echo "Current image id: ${OLD_IMAGE_ID}"
echo "Start committing container '${CONTAINER_NAME}' into image '${IMAGE_REPO}'"
docker save $(docker commit ${CONTAINER_NAME} ${IMAGE_REPO}) | docker-squash -t ${IMAGE_REPO} -verbose | docker load
NEW_IMAGE_ID="$(docker images | grep ${IMAGE_REPO} | awk '{print $3}')"
echo "Final image id: ${NEW_IMAGE_ID}"
if [ "$NEW_IMAGE_ID" != "" ]; then
echo "Stop and delete container ${CONTAINER_NAME}"
docker stop ${CONTAINER_NAME} && docker rm ${CONTAINER_NAME}
echo "Delete untagged images"
docker images | grep "^<none>" | awk '{print $3}' | xargs --no-run-if-empty docker rmi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment