# 推荐文章:https://blog.csdn.net/weixin_44953658/article/details/116021628
批量 分开打包 多个镜像 脚本:
#!/bin/bash
GREEN_COLOR='\e[032m' #绿
RED_COLOR='\e[031m' #红
YELLOW_COLOR='\e[033m' #黄
BLACK_COLOR='\e[0m' #黑
declare image_id=(`docker images | grep -Ev '^k8s|^harbor|^rancher' | tail -20 | awk '{print $3}'`)
declare image_name=(`docker images | grep -Ev '^k8s|^harbor|^rancher' | tail -20 | awk '{print $1}' | awk -F/ '{print $NF}'`)
declare image_version=(`docker images | grep -Ev '^k8s|^harbor|^rancher' | tail -20 | awk '{print $2}'`)
declare image_nameqc=(`docker images | grep -Ev '^k8s|^harbor|^rancher' | tail -20 | awk '{print $1}'`)
for i in ${!image_id[@]}
do
docker save ${image_id[i]} > ${image_name[i]}_${image_version[i]}.tar.gz
if [ $? -eq 0 ];then
echo -e "${YELLOW_COLOR}${image_id[i]} ${BLACK_COLOR} in ${YELLOW_COLOR} ${image_nameqc[i]} ${BLACK_COLOR} =====> ${GREEN_COLOR}back finish!!!${BLACK_COLOR} =====> back file is ${RED_COLOR} ${image_name[i]}_${image_version[i]}.tar.gz ${BLACK_COLOR}"
echo ""
fi
done
# docker 打包容器成镜像 并save到本地 单个打包
docker commit 容器id 镜像名:镜像版本
docker save 镜像名:镜像版本 -o xxx.tar
# 批量打包 打包成一个
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-master.tar # 批量 save
# docker load -i k8s-master.tar # 批量 load
#----------------------------------------------常用查看
docker info #查看宿主机整体容器情况
docker images
docker ps -a
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Ports}}" # 查看存活 容器 镜像 名称 开放端口 实用!赞!
docker ps -a --no-trunc # 不省略显示完整信息
docker logs -f 容器id #查看容器日志
docker inspect 556b46428c25 | grep -A 10 Cmd # 查看容器详情 过滤Cmd关键字后十行 -B前十行 -C前后十行
docker inspect WebServer | grep "NetworkMode" -C 5 # 查看容器网络类型
# -------------------------------------删除容器
#1、删除所有容器
docker rm `docker ps -a -q`
#2、删除所有镜像
docker rmi `docker images -q`
#3、按条件删除镜像
#没有打标签
docker rmi `docker images -q | awk '/^<none>/ { print $3 }'`
#镜像名包含关键字
docker rmi --force `docker images | grep doss-api | awk '{print $3}'` #其中doss-api为关键字
#------------------------------------------进入容器
docker attach id
docker exec -it 775c7c9ee1e1 /bin/bash
#------------------------------------------进入grafana 运行中容器 推荐使用
docker exec -it id bash
#------------------------------------------docker目录映射 ubuntu是 image名称 也可以是image的id
docker run -it -v /root/docker_file:/root ubuntu
docker start -it -v /root/docker_file:/var/lib/ ddc2cc5c1edc
#------------------------------------------------------------var/lib/ 打包运行中的容器
# -a 提交者name -m 镜像名称 在运行容器id 镜像id
# 扩展 -p :在commit时,将容器暂停。-c :使用Dockerfile指令来创建镜像;
docker commit 容器id 镜像名称foo/liveubuntu16 # 直接打包
docker commit -a "myname" -m "ubuntu20-py3.8-ping-svn" a941d30c56bc ubuntu20:v2
#docker export需要指定container,不能像docker save那样指定image或container都可以。
docker export d64dbf8193bb > ubuntu20_0714.tar
docker save d64dbf8193bb > ubuntu20_0714.tar
#----------------------------------------拷贝docker images到其他主机
docker save -o golang:alpine3.7 ./my-golang-alpine3.7.tar # 把我本机的golang:alpine3.7 镜像保存为当前目录下的归档文件my-golang-alpine3.7.tar ,然后把此归纳文件拷贝到任意你想要的地方(比如 u盘 移动硬盘 电脑等)
sudo docker load < ubuntu20_0724.tar # 在需要还原docker image的主机执行:(宿主机必须装有docker)
提示 Loaded image: golang:alpine3.7 表示加载成功,我们就可以级继续使用这个docker 镜像啦
# 备注: 在save docker镜像的时候可以将多个images保存为一个归档文件 ,
# 导出时候也就可以从一个归档文件里面导出多个
#---------------------------------------------- 启动docker
# 后台运行 参数“-d” 容器并且开启端口映射 加上 /bin/bash貌似无法启动
docker run -d -p 8000:8000 foo/liveubuntu16 /bin/bash
# 交互式运行 并制定端口映射
docker run -it -p 8000:8000 foo/liveubuntu16 /bin/bash
#交互式运行 创建文件夹 并制定端口映射
docker run -it -v /root/docker_file:/root -p 8000:8000 foo/liveubuntu16 /bin/bash
#ubuntu的话 改成home/用户家目录目录
docker run -it -v /home/byzoro/docker_file:/root -p 8000:8000 foo/liveubuntu16 /bin/bash
docke rename 容器id new_name
#--------------------------------------------------------------------------例子grafana 使用docker启动 -p 指定端口 -v 指定存储
#参考链接:https://grafana.com/docs/grafana/latest/installation/docker/
# 安装最新版本grafana 和 几个常用插件 zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
docker run -d \
-p 3000:3000 \
--name=grafana \
-e "GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app, grafana-clock-panel,grafana-simple-json-datasource" \
grafana/grafana
# 指定版本 grafana/grafana:<version> 并安装插件 使用宿主机端口3001
docker run -d \
-p 3001:3000 \
--name=grafana6.7.2 \
-e "GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app, grafana-clock-panel,grafana-simple-json-datasource" \
grafana/grafana:6.7.2
# 创建docker存储 create a persistent volume for your data in /var/lib/grafana (database and plugins)
docker volume create grafana-storage
#设置garafa存储 用于grafa重启使用
docker run -it -p 3000:3000 --name=grafana0728 -v grafana-storage:/var/lib/grafana -e "GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app, grafana-clock-panel,grafana-simple-json-datasource" grafana/grafana
# docker启动 grafana并且安装插件
# 参考网址:Run Grafana Docker image | Grafana documentation 也可以多行命令 样例 未指定版本和存储
docker run -d \
-p 3000:3000 \
--name=grafana \
-e "GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app, grafana-clock-panel,grafana-simple-json-datasource" \
grafana/grafana