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

news/2025/2/26 6:49:10

前言

在开发和生产环境中,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.niftyadmin.cn/n/5868248.html

相关文章

快节奏生活

在当今快节奏的商务环境中&#xff0c;效率成为了决定企业竞争力的关键因素之一。亿可达软件连接平台&#xff0c;以其独特的功能和优势&#xff0c;为职场人士带来了前所未有的便捷与高效&#xff0c;成为了众多用户心中的“宝藏”工具。 1、亿可达&#xff1a;自动化流程的搭…

项目访问使用 docker bridge 网络模式(端口映射)配置详解

在平常的开发工作中&#xff0c;我们经常需要部署项目。比如部署测试环境、生产环境等&#xff0c;使用 docker 方式部署很便捷&#xff0c;可以有效的减少同样的代码换环境运行的问题。docker 常见的网络模式有 host、bridge 等。host 模式直接共享宿主机的网络栈&#xff0c;…

mysql逻辑备份 mysqldump和mydumper实践

1.mysqldump mysqldump -uroot -pPassw0rd* testdb1 --single-transaction --set-gtid-purgedoff > 1.sql 注意&#xff1a;--single-transaction不会锁表&#xff0c;如果 不加这个参数会在全表上加S锁&#xff0c;不允许更新和删除&#xff0c;还有--set-gtid-purged…

网络安全考题

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1。简述子网掩码的工作原理。 子网掩码也是一个32位地址&#xff0c;其作用是&#xff1a; 用于屏蔽IP地址的一部分以区分网络标识和主机标识&#xff0c;并说明该…

《论湖仓一体架构及其应用》审题技巧 - 系统架构设计师

软考论文写作框架 一、考点概述 “湖仓一体架构及其应用”这一论题&#xff0c;主要考察了考生对现代数据管理系统中湖仓一体架构的理解、应用及问题解决能力。随着5G、大数据、人工智能、物联网等技术的快速发展&#xff0c;企业数据的管理需求正发生深刻变化。传统的数据管…

深度学习进阶:构建多层神经网络

在上一篇文章中&#xff0c;我们从零开始构建了一个简单的两层神经网络&#xff0c;并通过异或问题&#xff08;XOR&#xff09;展示了神经网络的强大能力。今天&#xff0c;我们将进一步深入&#xff0c;构建一个更复杂的多层神经网络&#xff0c;并引入更多高级概念&#xff…

Kafka可视化工具EFAK(Kafka-eagle)安装部署

Kafka Eagle是什么&#xff1f; Kafka Eagle是一款用于监控和管理Apache Kafka的开源系统&#xff0c;它提供了完善的管理页面&#xff0c;例如Broker详情、性能指标趋势、Topic集合、消费者信息等。 源代码地址&#xff1a;https://github.com/smartloli/kafka-eagle 前置条件…

4.static关键字和const关键字的作用【高频】

1. static 关键字&#xff1a; 用static可以声明 静态变量&#xff0c;它存储在静态存储区中&#xff0c;它的生命周期 在整个程序运行期间 都存在。 静态局部变量&#xff1a; 参考之前 静态全局变量&#xff1a; 参考之前 类中的静态成员 在类中&#xff0c;被static声明…