sh脚本:docker镜像tar包解压命名更新
背景
在项目实施过程中,部署生产环境,有些时候会存在网络隔离的情况,只有通过堡垒机才能够进行服务器操作,这时候需要手动上传docker镜像,并更新生产环境服务器。下面的脚本初衷用于这种情况。
脚本
#!/bin/bash
# 清空所有停止的容器
docker container prune -f
# 删除所有未打标签的 dangling 镜像
docker image prune -f --all
# 指定Docker镜像tar文件路径
image_tar="/root/smartcity/bak/dataease-backend.tar"
image_name="dataease-backend:dm-1.18"
# 使用docker load命令加载tar文件中的镜像
docker load -i $image_tar
# 获取加载后的镜像ID
image_id=$(docker images --filter "dangling=true" --format "{{.ID}}")
# 确保镜像ID变量不为空
if [ -n "$image_id" ]; then
# 为镜像指定新的tag,例如:将无标签的镜像标记为 myregistry/myimage:latest
docker tag $image_id $image_name
else
echo "No image was loaded from " + $image_tar
fi