前言
在开发和生产环境中,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 并加载配置文件 |