扩展 docker 管理命令

停止多个容器: docker stop <container1> <container2> <container3> 

停止所有容器: docker stop $(docker ps -qa)  

我想用  docker stop :all   来生成   docker stop $(docker ps -qa)   命令。就是特殊参数翻译成标准的命令。

可能感觉也没啥用,但你会了这种思想,以后说不定能解决大问题呢。要不是 docker 命令提示干没了,我就觉得完美。当然,高手不需要命令提示,哈哈。

 

 把代码追加到 /etc/bash.bashrc 文件中

function docker(){

    alias docker=`which $FUNCNAME`
    local manage="$1"
    local args="$@"
    shift 1

    case "$manage" in
        'start'|'stop')
            args=${args//':all'/'$(docker ps -qa)'}
        ;;
        'rm')
            args=${args//':all'/'-f $(docker ps -qa)'}
        ;;
        'image')
            args=${args//':all'/'$(docker image ls -qa)'}
            args=${args//':clear'/'$(docker image ls -f "dangling=true" -q)'}
        ;;
        'cp')
            [[ "$args" =~ ':into' ]] && { set -- ${args#*:into};    args=${args//:into*/"$2 $1:$2"};    }
            [[ "$args" =~ ':out' ]] && { set -- ${args#*:outof};  args=${args//:outof*/"$1:$2 $2"};   }

        ;;
        'exec')
            [ $# == 1 ] && args=${args//$@/"-it $@ bash"}
        ;;
        'inspect')
            args=${args//':pid'/'--format "{{.Name}}: {{.State.Pid}}"'}
            args=${args//':ip'/'--format "{{.Name}}: {{.NetworkSettings.IPAddress}}"'}
            args=${args//':all'/'$(docker ps -q)'}
        ;;
        'run')
            args=${args//':restart'/"--restart=always"}
            args=${args//':once'/'--rm -it'}
        ;;
    esac
    
    echo docker $args
    eval "docker $args"

    unalias $FUNCNAME
}
原文地址:https://www.cnblogs.com/zbseoag/p/14054501.html