Skip to content

Instantly share code, notes, and snippets.

@thulio
Forked from pangpond/docker-clean
Created June 19, 2017 14:59
Show Gist options
  • Save thulio/24dbb3e9824f9d805a2517fe7d35a874 to your computer and use it in GitHub Desktop.
Save thulio/24dbb3e9824f9d805a2517fe7d35a874 to your computer and use it in GitHub Desktop.

Revisions

  1. @pangpond pangpond created this gist Feb 21, 2017.
    75 changes: 75 additions & 0 deletions docker-clean
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,75 @@
    #!/bin/bash

    # Copyright 2017 Théo Chamley
    # Permission is hereby granted, free of charge, to any person obtaining a copy of
    # this software and associated documentation files (the "Software"), to deal in the Software
    # without restriction, including without limitation the rights to use, copy, modify, merge,
    # publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
    # to whom the Software is furnished to do so, subject to the following conditions:
    #
    # The above copyright notice and this permission notice shall be included in all copies or
    # substantial portions of the Software.
    #
    # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
    # BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

    IMAGES=$@

    echo "This will remove all your current containers and images except for:"
    echo ${IMAGES}
    read -p "Are you sure? [yes/NO] " -n 1 -r
    echo # (optional) move to a new line
    if [[ ! $REPLY =~ ^[Yy]$ ]]
    then
    exit 1
    fi


    TMP_DIR=$(mktemp -d)

    pushd $TMP_DIR >/dev/null

    open -a Docker
    echo "=> Saving the specified images"
    for image in ${IMAGES}; do
    echo "==> Saving ${image}"
    tar=$(echo -n ${image} | base64)
    docker save -o ${tar}.tar ${image}
    echo "==> Done."
    done

    echo "=> Cleaning up"
    echo -n "==> Quiting Docker"
    osascript -e 'quit app "Docker"'
    while docker info >/dev/null 2>&1; do
    echo -n "."
    sleep 1
    done;
    echo ""

    echo "==> Removing Docker.qcow2 file"
    rm ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

    echo "==> Launching Docker"
    open -a Docker
    echo -n "==> Waiting for Docker to start"
    until docker info >/dev/null 2>&1; do
    echo -n "."
    sleep 1
    done;
    echo ""

    echo "=> Done."

    echo "=> Loading saved images"
    for image in ${IMAGES}; do
    echo "==> Loading ${image}"
    tar=$(echo -n ${image} | base64)
    docker load -q -i ${tar}.tar || exit 1
    echo "==> Done."
    done

    popd >/dev/null
    rm -r ${TMP_DIR}