Docker打包至云服务器

Docker打包至云服务器

1.导出Docker镜像

预先拉取 busybox 镜像busybox 镜像用于在容器内运行 tar 命令,将数据卷内容打包成一个归档文件并保存到主机上的备份目录中。这是因为我们需要一个轻量级的 Linux 环境来执行这些操作,而 busybox 非常适合这个用途。

docker pull busybox

创建export_all.sh 文件

#!/bin/bash

# 获取当前日期时间作为备份文件夹名称的一部分
backup_dir="docker_backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p $backup_dir

# 导出所有Docker镜像
echo "Exporting Docker images..."
docker images --format "{{.Repository}}:{{.Tag}}" | while read -r image; do
  if [[ -n "$image" && "$image" != "<none>:<none>" ]]; then
    echo "Saving image $image..."
    tar_file="${backup_dir}/$(echo $image | sed 's/[\/:]/_/g').tar"
    docker save -o "$tar_file" "$image"
  fi
done

# 导出所有Docker容器数据卷
echo "Exporting Docker container volumes..."
docker ps -a --format "{{.Names}}" | while read -r container; do
  if [[ -n "$container" ]]; then
    echo "Saving volumes for container $container..."
    tar_file="${backup_dir}/${container}_volumes.tar"
    docker run --rm --volumes-from $container -v $(pwd)/$backup_dir:/backup busybox tar cvf /backup/$(basename $tar_file) /
  fi
done

echo "Backup process completed. All files are saved in the $backup_dir directory."

运行:export_all.sh 脚本

sh export_all.sh

会得到 docker_backup_20240615_220510 文件【里面就是.tar和数据卷文件了】

在这里插入图片描述

2.在云服务器中安装yum和docker环境


这个就不多加赘述了网上的教程很多,建议也使用脚本安装【算了,还是加上吧】

centos yum 安装

一样的创建.sh为后缀的文件,sh xxx.sh执行 就好了

安装yum 和 切换 镜像

出问题了【Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist】就参考问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist:…-腾讯云开发者社区-腾讯云 (tencent.com)

#!/bin/bash

# 更新系统
sudo yum update -y

# 安装yum工具
sudo yum install -y yum-utils

# 安装EPEL存储库
sudo yum install -y epel-release

# 清除缓存
sudo yum clean all

echo "Yum安装完成!"
#!/bin/bash

# 备份原有的Yum源配置文件
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

# 下载阿里云Yum源配置文件
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 清除缓存
sudo yum clean all

echo "Yum源已切换为阿里云!"

CentOS Docker 安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或者

yum -y install docker

3.整体恢复脚本示例

先上传文件至云服务器上

创建文件:restore_all.sh

修改:backup_dir=“docker_backup_YYYYMMDD_HHMMSS” 为自己的文件名

#!/bin/bash

BACKUP_DIR="docker_backup_20240615_220510"
IMAGE_PATTERN="$BACKUP_DIR/*.tar"
VOLUME_PATTERN="$BACKUP_DIR/volumes/*.tar"

echo "Loading image from $IMAGE_PATTERN..."

# 加载 Docker 镜像
for tar_file in $IMAGE_PATTERN; do
  if [ -f "$tar_file" ];then
    docker load -i "$tar_file"
  else
    echo "Image file not found: $tar_file"
    exit 1
  fi
done

echo "Restoring volumes for containers..."

# 获取所有要恢复的卷
for volume_tar in $VOLUME_PATTERN; do
  if [ -f "$volume_tar" ]; then
    container_name=$(basename "$volume_tar" .tar)
    volume_name="restore_${container_name}"

    echo "Restoring volume for container $container_name..."

    # 创建 Docker 卷
    docker volume create $volume_name

    # 创建一个临时容器来导入数据卷
    docker run --rm -v $volume_name:/volume -v $(pwd)/$volume_tar:/backup/$container_name.tar busybox sh -c "cd /volume && tar xf /backup/$container_name.tar"

    echo "Volume restored for container $container_name"
  else
    echo "Volume tar file not found: $volume_tar"
    exit 1
  fi
done

echo "Restore process completed!"

.将数据卷都放在volumes中
在这里插入图片描述

执行脚本

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里云服务器(ECS)是阿里云提供的一种云计算服务,而Docker是一种开源的容器化平台。在阿里云服务器上使用Docker可以帮助用户更高效地部署和管理应用程序。 Docker的核心概念是容器,它是一种轻量级的虚拟化技术,可以将应用程序及其依赖打包成一个独立的可执行单元,称为容器。这样,应用程序可以在任何支持Docker的环境中运行,而不需要担心环境差异性带来的问题。 在阿里云服务器上使用Docker,您可以享受以下好处: 1. 灵活性:Docker容器可以快速部署和启动,使您的应用程序能够快速响应变化的需求。 2. 资源利用率:Docker容器共享主机操作系统的内核,因此可以更高效地利用服务器资源。 3. 可移植性:Docker容器可以在不同的环境中运行,无需担心环境差异性。 4. 可扩展性:通过使用Docker容器编排工具(如Docker Compose和Kubernetes),您可以轻松地扩展和管理多个容器。 如果您想在阿里云服务器上使用Docker,您可以按照以下步骤进行操作: 1. 在阿里云上创建一台ECS实例,并确保已安装Docker。 2. 使用Docker命令或Docker Compose编写Dockerfile和docker-compose.yml文件,描述您的应用程序和其依赖。 3. 构建Docker镜像并将其推送到阿里云的容器镜像仓库(如阿里云容器镜像服务)。 4. 在ECS实例上运行Docker容器,可以使用Docker命令或Docker Compose进行管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值