docker 常用命令收集

1.系统性文档

1.Docker 命令大全(菜鸟教程)
2.docker reference(官方文档))

2.删除

批量删除

1.删除异常停止的docker容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'` 
2.删除名称或标签为none的镜像
docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`

3.导入导出

镜像导入导出

1.镜像导出
# 模板
docker save [OPTIONS] IMAGE [IMAGE...]
# --output , -o	 : Write to a file, instead of STDOUT
# 实例
docker save -o openjdk8stretch.tar openjdk:8-jdk-stretch
# 官方提供的实例
$ docker save busybox > busybox.tar
$ ls -sh busybox.tar
2.7M busybox.tar
$ docker save --output busybox.tar busybox
$ ls -sh busybox.tar
2.7M busybox.tar
$ docker save -o fedora-all.tar fedora
$ docker save -o fedora-latest.tar fedora:latest
# 还可以使用gzip
docker save myimage:latest | gzip > myimage_latest.tar.gz
# 还可以按选择的镜像一起打包
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy
2.镜像批量导出
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o filename.tar

参考地址:

3.镜像导入
# 使用docker load导入由docker save导出的镜像
# 模板
docker load [OPTIONS]
# --input , -i:指定导入的文件,代替 STDIN。
# --quiet , -q : 精简输出信息。
# 导入镜像
docker load < filename.tar.gz
# 或使用如下命令导入镜像
docker load --input filename.tar

容器导入导出

# 导入
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
# 导出
docker export [OPTIONS] CONTAINER

docker load与docker import区别

4.进入容器命令

# 通过 exec 命令对指定的容器执行 bash(能进入容器):
docker exec -it 9df70f9a0714 /bin/bash

5.批量启停

# 启动所有容器的命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
# 关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
# 删除所有已经停止的容器
docker rm $(docker ps -a -q)
# 删除所有镜像
docker rmi $(docker images -q)
# 删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
# 强制删除镜像名称中包含“doss-api”的镜像
docker rmi --force $(docker images | grep doss-api | awk '{print $3}')
# 强制删除镜像名称中包含“none”的镜像,与上面类似只是使用了xargs作为传值
docker images|grep none|awk '{print $3 }'|xargs docker rmi

6.批量删除冗余无用docker数据

# docker删除所有未使用的容器,删除所有未使用的镜像、网络
docker system prune -a -f
# docker删除所有未使用的镜像
docker image prune
# docker删除所有未使用的容器(删除所有处于非运行状态的容器)
docker container prune
# docker删除所有未被挂载的卷:
docker volume prune
# docker删除所有未使用的网络
docker network prune

附:补充命令

本部分摘自于参考文献四

  • 创建docker-search.sh脚本,内容如下
#!/bin/bash
API="https://registry.hub.docker.com/v1/repositories"
DEFAULT_NAME="nginx"
DEFAULT_TIMEOUT=3
 
function Usage(){
cat << HELP
 
Usage: docker-search NAME[:TAG]
 
docker-search list all tags for docker image on a remote registry.
 
Example:
    docker-search (default nginx)
    docker-search nginx
    docker-search nginx:1.15.8
    docker search nginx | docker-search
    docker search nginx | docker-search :1.15.8
    echo nginx | docker-search
    echo nginx | docker-search :1.15.8
HELP
}
 
ARG=$1
if [[ "$ARG" =~ "-h" ]];then
    Usage
    exit 0
fi
 
function ParseJson(){
    tr -d '[\[\]" ]' | tr '}' '\n' | awk -F: -v image=$1 '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'
}
 
function GetTags(){
    image=$1
    tag=$2
    ret=`curl -s ${API}/${image}/tags`
    tag_list=`echo $ret | ParseJson ${image}`
    if [ -z "$tag" ];then
        echo -e "$tag_list"
    else
        echo -e "$tag_list" | grep -w "$tag"
    fi
}
 
if [ -z $ARG ] || [[ ${ARG:0:1} == ":" ]];then
    if [ -x /usr/bin/timeout ];then
        images=`timeout $DEFAULT_TIMEOUT` awk '{print $1}' | grep -v "NAME" || echo $DEFAULT_NAME
    else
        images=`awk '{print $1}' | grep -v "NAME"`
    fi
else
    images=`echo $ARG | awk -F: '{print $1}'`
fi
tag=`echo $ARG | awk -F: '{print $2}'`
 
for i in ${images}
do
    tags=`GetTags $i $tag`
    count=`echo $tags | wc -w`
    if [[ $count -gt 0 ]];then
        echo -e "IMAGE [$i:$tag]:"
        echo -e "$tags"
        echo
    fi
done
  • 使用
chmod +x docker-search
./docker-search redis

参考地址

1.docker 批量删除无用的容器或镜像
2.harbor批量导出镜像
3.Docker容器进入的4种方式
4.命令行获取docker远程仓库镜像列表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值