Docker 停机扩容

xiaoxiao2021-02-28  88

Docker 停机扩容

备份所有容器

docker ps -a|grep -v "NAMES"|awk '{print $NF}'|xargs -I {} sudo sh -c "docker export {} >/tmp/docker_backup/containers/docker_{}.tar" grep -v “NAMES” 去除含有NAMES的行 awk ‘print $NF’ 将数据分割并取最后一列数据xargs -I {} 将前面所有的标准输出结果作为参数传递给后面的命令(sh)

docker export {} > 路径/文件名 : docker 备份容器命令 ,{}为前面xargs传入参数,实际为容器名或容器ID

管道(管道符 | ) :实现“将前面的标准输出作为后面的标准输入”

xargs是实现“将标准输入作为命令的参数”

awk : 一个强大的文本分析工具。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

~$:echo "abc<def>ghi" | awk 'BEGIN{ FS="[<|>]" } {print $1 "..." $2 "..." $3}' ~$: abc...def...ghi

备份镜像

备份所有镜像

docker images|grep -v "REPOSITORY"|awk '{print $1":"$2}' >docker_images.txt && docker save -o /tmp/docker_backup/images/`cat docker_images.txt|cut -d/ -f2`.tar `cat docker_images.txt` && rm -rf docker_images.txt cat docker_images.txt 输出文件内容 cut -d/ -f2 以“/”为分隔符分割每行字符串,并取其中第2列数据

备份容器对应的镜像

docker ps -a | grep -v "NAMES" | awk '{print $NF}' | xargs -I {} sudo sh -c "docker images | grep {}" | awk '{print $1":"$2}' | xargs -I @@ sudo sh -c "docker save -o /docker_bak/image_@@.tar @@" 可以使用 docker rm (dockerpsqa)dockerrmi (docker images -q) 一次性删除所有的镜像。
转载请注明原文地址: https://www.6miu.com/read-37053.html

最新回复(0)