dbs67
6/20/2016 - 10:41 PM

Docker Functions in Bash

Docker Functions in Bash

#!/usr/bin/env bash

DOCKER_APP="docker"
DOCKER_MACHINE_APP="docker-machine"
CUR_DATE=`date`
DEBUG_MSG_PREFIX="[${CUR_DATE}][INFO]"
DOCKER_SCRIPTS_DIR=`cd ${HOME}/.docker-scripts; pwd`

function abort()
{
    kill -INT $$
}

function usage()
{
    echo "USAGE: $1 $2"
}

function check_parameter_docker_machine()
{
    if [ -z "$1" ]; then
        return 1
    fi

    DOCKER_MACHINE_NAME="${1}"

    return 0
}

function check_parameter_docker_container()
{
    if [ -z "$1" ]; then
        return 1
    fi

    DOCKER_CONTAINER_NAME="${1}"

    return 0
}

function check_parameter_docker_image()
{
    if [ -z "$1" ]; then
        return 1
    fi

    DOCKER_IMAGE_NAME="${1}"

    return 0
}

function docker_container_login()
{
    check_parameter_docker_container ${1}

    if [ $? -eq 1 ]; then
        usage ${DOCKER_APP} "exec -it <container id/name> bash"
        abort
    fi

    ${DOCKER_APP} exec -it ${DOCKER_CONTAINER_NAME} bash
}

function docker_container_clean()
{
    echo "${DEBUG_MSG_PREFIX} removing all containers"
    ${DOCKER_APP} rm -f $(${DOCKER_APP} ps -aq)
    echo "${DEBUG_MSG_PREFIX} all containers REMOVED"
}

function docker_container_run()
{
    check_parameter_docker_container ${1}

    if [ $? -eq 1 ]; then
        usage ${DOCKER_APP} "<container id/name> <image id/name>"
        abort
    fi

    check_parameter_docker_image ${2}

    if [ $? -eq 1 ]; then
        usage ${DOCKER_APP} "<container id/name> <image id/name>"
        abort
    fi

    echo "${DEBUG_MSG_PREFIX} starting a container from ${DOCKER_IMAGE_NAME}"
    ${DOCKER_APP} run --name ${DOCKER_CONTAINER_NAME} -P -d ${DOCKER_IMAGE_NAME}
    echo "${DEBUG_MSG_PREFIX} ${DOCKER_CONTAINER_NAME} started"
}

function docker_image_clean()
{
    echo "${DEBUG_MSG_PREFIX} removing all images"
    ${DOCKER_APP} rmi -f "$(${DOCKER_APP} images -aq)"
    echo "${DEBUG_MSG_PREFIX} all images REMOVED"
}

function docker_machine_env_set()
{
    check_parameter_docker_machine ${1}

    if [ $? -eq 1 ]; then
        usage ${DOCKER_MACHINE_APP} "<machine name>"
        abort
    fi

    eval "$(${DOCKER_MACHINE_APP} env "${DOCKER_MACHINE_NAME:-local}")"
    echo "${DEBUG_MSG_PREFIX} environment variables set"
}

function docker_machine_env_unset()
{
    eval "$(${DOCKER_MACHINE_APP} env --unset)"
    echo "${DEBUG_MSG_PREFIX} environment variables removed"
}

function docker_machine_start()
{
    check_parameter_docker_machine ${1}

    if [ $? -eq 1 ]; then
        usage ${DOCKER_MACHINE_APP} "<machine name>"
        abort
    fi

    echo "${DEBUG_MSG_PREFIX} starting ${1} ..."
    ${DOCKER_MACHINE_APP} start ${DOCKER_MACHINE_NAME} &>/dev/null
    echo "${DEBUG_MSG_PREFIX} ${DOCKER_MACHINE_NAME} started"
    docker_machine_env_set ${DOCKER_MACHINE_NAME}
}

function docker_machine_stop()
{
    check_parameter_docker_machine ${1}

    if [ $? -eq 1 ]; then
        usage ${DOCKER_MACHINE_APP} "<machine name>"
        abort
    fi

    echo "${DEBUG_MSG_PREFIX} stopping ${DOCKER_MACHINE_NAME} ..."
    ${DOCKER_MACHINE_APP} stop ${DOCKER_MACHINE_NAME} &>/dev/null
    echo "${DEBUG_MSG_PREFIX} ${DOCKER_MACHINE_NAME} stopped"
    docker_machine_env_unset
}