导出docker镜像脚本
# 脚本逻辑
写一个shell脚本,执行的时候参数为:"镜像名称:版本号" 执行后: 1.服务器检查docker是否存在,不存在则提示异常 2.检查输入参数是否为空。为空则提示请输入 镜像名称:版本号 3.服务器进行下载镜像 docker pull 镜像名称:版本号,完成打印日志到屏幕上 4.下载完成后对镜像进行打包 docker save -o xxx.tar 镜像名称:版本号,完成打印日志到屏幕上 5.删除镜像 docker rmi 镜像名称:版本号,完成打印日志到屏幕上
# 脚本内容
download_image.sh
#!/bin/bash
# 检查docker是否存在
if ! command -v docker &> /dev/null; then
echo "异常:Docker未安装或未配置环境变量"
exit 1
fi
# 检查输入参数
if [ -z "$1" ]; then
echo "请输入 镜像名称:版本号"
exit 1
fi
image_name="$1"
# 下载镜像
echo "开始下载镜像 $image_name"
docker pull "$image_name"
# 提取镜像名称和版本号
IFS=':' read -r -a name_parts <<< "$image_name"
name="${name_parts[0]}"
version="${name_parts[1]}"
# 替换冒号和斜杠为下划线
name_with_underscore="$(echo "$name" | sed 's/[:/]/_/g')"
image_file="${name_with_underscore}_${version}.tar"
# 打包镜像
echo "开始打包镜像 $image_name 到文件 $image_file"
docker save -o "$image_file" "$image_name"
# 删除镜像
echo "开始删除镜像 $image_name"
docker rmi "$image_name"
echo "脚本执行完成"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 执行命令
赋权
chmod +x download_image.sh
1
例:镜像 redis:7.0.11
./download_image.sh redis:7.0.11
1
上次更新: 2023/07/12, 03:07:58