我的docker常用基础命令 docker命令 --- 含打包镜像 批量 save image

须景胜
2023-12-01

 

#  推荐文章: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


 

 类似资料: