当前位置: 首页 > article >正文

从零开始:在 MacOS 中通过 Docker 部署跨平台 Redis 服务(支持 Ubuntu 迁移)

前言

在开发和生产环境中,Docker 已成为部署服务的标准工具。但对于使用 MacOS(尤其是 Apple Silicon 架构)的开发者,将本地构建的镜像迁移到 x86-64 架构的 Ubuntu 服务器时,常会遇到平台兼容性问题。本文将提供一套 从镜像构建、跨平台适配、数据持久化到服务迁移 的完整解决方案,助你轻松实现全流程部署。


一、环境准备

1. 安装 Docker Desktop

  • 访问 Docker 官网下载并安装 Docker Desktop。
  • 启动 Docker,确认状态栏显示 Running

2. 启用 Docker Buildx

Buildx 是 Docker 的多平台构建工具,执行以下命令启用:

docker buildx create --use

二、构建跨平台 Redis 镜像

1. 构建多平台镜像

docker buildx build --platform linux/amd64 -t redis:latest .
  • -platform linux/amd64:强制构建 x86-64 架构镜像,确保与 Ubuntu 服务器兼容。

2. 直接构建镜像

docker pull --platform linux/amd64 redis:latest
  • 以上两种方法二选一即可,如果使用第2种,则不需要进行启用Docker Buildx

三、镜像打包与迁移到 Ubuntu

1. 导出镜像为独立文件

在 MacOS 终端中,使用 docker save 命令将镜像打包成一个压缩文件:

# 语法:docker save -o <输出文件名> <镜像名>:<标签>
docker save -o ubuntu-redis.tar redis:lates

这会生成 ubuntu-redis.tar 文件,包含镜像的所有内容(包括 Ubuntu 系统、Redis 和配置)。

2. 传输到 Ubuntu 服务器

# 示例:通过 scp 传输到 Ubuntu 主机的 /home/user 目录
scp ubuntu-redis.tar user@ubuntu-ip:/home/user
  • 或者使用类似于Xshell、Transmit连接服务器的工具进行镜像文件上传

3. 在 Ubuntu 中加载镜像

在 Ubuntu 终端中,使用 docker load 加载镜像:

docker load -i ubuntu-redis.tar

加载后可通过 docker images 查看镜像是否已存在。

4. 运行容器(Ubuntu)

  • 创建宿主数据存储目录和配置文件

# 在宿主机(Mac/Ubuntu)上创建持久化目录和配置文件
mkdir -p ~/redis/data
touch ~/redis/redis.conf

  • 编写 Redis 配置文件

编辑 ~/redis/redis.conf,写入以下内容:

bind 0.0.0.0
port 6379
appendonly yes
dir /data
  • bind 0.0.0.0:允许所有外部 IP 连接。
  • appendonly yes:启用 AOF 持久化。
  • dir /data:指定数据存储目录(需与容器内挂载路径一致)。

执行以下命令启动容器

docker run -d \\
  --name my-redis \\
  -p 6379:6379 \\
  -v ~/redis/data:/data \\
  -v ~/redis/redis.conf:/etc/redis/redis.conf \\
  redis \\
  redis-server /etc/redis/redis.conf

参数解析

参数作用
-d后台运行容器
--name my-redis容器命名
-p 6379:6379端口映射(宿主机端口:容器端口)
-v ~/redis/data:/data挂载数据目录(宿主机目录:容器目录)
-v ~/redis/redis.conf:/etc/redis/redis.conf挂载配置文件
ubuntu-redis镜像名称
redis-server /etc/redis/redis.conf启动 Redis 并加载配置文件


http://www.kler.cn/a/561389.html

相关文章:

  • Ansible剧本-playbook
  • 【Java】访问限制符
  • 计算机毕业设计SpringBoot+Vue.js体育馆管理系统(源码+文档+PPT+讲解)
  • 【深度学习神经网络学习笔记(二)】神经网络基础
  • 已经有私钥的情况下,mac如何配置私钥
  • Flash-03
  • iOS手机App爬虫- (1) Mac安装Appium真机运行环境
  • C++学习之C概述、数据类型、进制转换与数据存储
  • pdf加自定义水印
  • Starlink卫星动力学系统仿真建模第九讲-滑模(SMC)控制算法原理简介及卫星控制应用
  • C++ openssl AES/CBC/PKCS7Padding 256位加密 解密示例 MD5示例
  • 数字IC低功耗后端设计实现之power gating和isolation技术
  • C 语言结构体:从入门到进阶的全面解析
  • deepseek_v3_base和deepseek_r1_zero和deepseek_r1
  • 实战篇-java8中的垃圾回收器
  • 图像分割UNet、生成模型SD及IP-Adapter
  • 多媒体常用概念
  • 2、事务的四大特性有哪些【高频】
  • Windows 11【1001问】通过UltraISO软碟通制作Win 11系统安装U盘
  • android 新增native binder service 方式(二)