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

从零开始:在 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 并加载配置文件

相关文章:

  • 基于Redis 的分布式 session 图解
  • 计算重建dMRI与GrondTruth之间的角度误差图(AAE)代码实现(pytorch)
  • Java 网络协议面试题答案整理,最新面试题
  • B站pwn教程笔记-3
  • 记录锁,间隙锁,Next-Key Lock
  • 2025数学建模竞赛汇总,错过再等一年
  • 2025-02-25 学习记录--C/C++-用C语言实现删除字符串中的子串
  • ollama无法通过IP:11434访问
  • 第9章 机器学习与统计模型
  • 《OpenCV》—— 背景建模
  • 精美登录注册UI,登录页面设计模板
  • 微信小程序面试题
  • 分治算法、动态规划、贪心算法、分支限界法和回溯算法的深度对比
  • 开源堡垒机 JumpServer 社区版实战教程:发布机的配置与Website资产配置使用
  • 大模型在急性肾损伤预测及临床方案制定中的应用研究
  • 策略模式在工作中的运用
  • go语言环境下载与配置(Windows)
  • 轻松搭建:使用Anaconda创建虚拟环境并在PyCharm中配置
  • muduo网络库2
  • 滴水逆向_esp寻址
  • 开发网站教程/怎么做手工
  • 做网站买计划书/百度认证怎么认证
  • 网站建设属于设备吗/网络推广网站的方法
  • Django可以做门户网站吗/绍兴seo排名收费
  • 宜昌 网站建设 公司/优化步骤
  • 酒店网站 asp.net/百度官方版