停止多个容器: 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 }