mac迁移本机docker应用

当需要将 Docker 应用从一台服务器迁移到另一台服务器时,首先,需收集待迁移 Docker 应用(容器)的创建命令,这是迁移的基础信息。

如果找不到了那就可以通过 docker inspect 或第三方工具 runlike 获取了。

1、确认 runlike 是否正确安装

pip3 list | grep runlike
# 如果没有输出结果,说明未安装,重新安装
pip3 install runlike

2、解决环境变量问题 zsh: command not found: runlike

macOS 中,pip3 安装的工具可能位于用户目录的 ~/.local/bin 或 Python 安装目录下,而这个路径可能未加入系统的环境变量 PATH 中。

# 方法 1:直接通过 Python 调用(简单直接)
python3 -m runlike -p e514f3bcf3cf
# 方法 2:将安装路径加入环境变量(一劳永逸)

# 1、找到 runlike 的安装路径:
pip3 show runlike | grep Location
# Location: /Users/MRG/Library/Python/3.9/lib/python/site-packages

# 2、提取二进制文件路径
# 通常是 Location 路径的上一级的 bin 目录:/Users/你的用户名/.local/bin
# 本次是:/Users/MRG/Library/Python/3.9/bin

# 3、编辑 zsh 配置文件
open -e ~/.zshrc

# 4、添加环境变量
# 在文件末尾添加以下内容(直接复制粘贴即可,无需修改):
# 添加 runlike 命令路径
export PATH="$PATH:/Users/gongchuanyou/Library/Python/3.9/bin"

# 5、生效配置
source ~/.zshrc

# 6、验证&帮助信息
runlike --help

如果使用了挂载卷需要保存卷信息。然后将镜像导出拷贝到另一台服务器,装载镜像,重建容器。以迁移 mysql 为例,使用 runlike 命令查看容器的创建命令:

# runlike -p e514f3bcf3cf          
docker run --name=mysql_8_4_0 \
	--hostname=e514f3bcf3cf \
	--mac-address=f2:b1:48:d6:88:f1 \
	--volume /Users/MRG/Data/docker/mysql_8_4_0/data:/var/lib/mysql \
	--volume /Users/MRG/Data/docker/mysql_8_4_0/logs:/var/log/mysql \
	--volume /Users/MRG/Data/docker/mysql_8_4_0/conf:/etc/mysql/conf.d \
	--env=MYSQL_ROOT_PASSWORD=c62b76c8cd172950ef \
	--env=TZ=Asia/Shanghai \
	--network=bridge \
	--privileged \
	-p 3306:3306 \
	--expose=33060 \
	--restart=always \
	--label='com.docker.compose.container-number=1' \
	--label='com.docker.compose.config-hash=f91e665458cd1f5c22534db40dd1c53c3fbc62b76c8cd172950efd2453469b72' \
	--label='com.docker.compose.service=chuan_mysql_8_4_0' \
	--label='com.docker.compose.project.config_files=/Users/MRG/Data/docker/mysql_8_4_0/docker-compose.yaml' \
	--label='com.docker.compose.project=mysql_8_4_0' \
	--label='com.docker.compose.image=sha256:dab7049abafe3a0e12cbe5e49050cf149881c0cd9665c289e5808b9dad39c9e0' \
	--label='com.docker.compose.project.working_dir=/Users/MRG/Data/docker/mysql_8_4_0' \
	--label='com.docker.compose.depends_on=' \
	--label='com.docker.compose.version=2.35.1' \
	--label='com.docker.compose.oneoff=False' \
	--runtime=runc \
	mysql:8.4.0 \
	mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

runlike 会输出一些额外的参数,并不是容器创建时的原生命令,不过稍微改一改还是能用的。

为了保持镜像的稳定,不使用 docker-hub 上的最新镜像。将当前系统中的镜像导出用来还原软件环境:

docker save -o mysqlMrG.tar mysql:8.4.0

这里将本地镜像打包成了文件,将镜像文件传输到另一台服务器上备用。下一步备份挂载卷,同样使用 tar 打包。

tar cvf mysqlMrG.20251008.tar mysql

将镜像和挂载卷数据传输到另一台服务器上后,执行恢复步骤。

# 1、装载镜像
docker load -i mysqlMrG.tar

# 2、解压数据文件
tar xvf mysqlMrG.20251008.tar -C mysql_data/

最后将卷指向新的目录重建容器

docker run --name=mysql_8_4_0 \
	--volume /Users/MRG/Data/docker/mysql_8_4_0/data:/var/lib/mysql \
	--volume /Users/MRG/Data/docker/mysql_8_4_0/logs:/var/log/mysql \
	--volume /Users/MRG/Data/docker/mysql_8_4_0/conf:/etc/mysql/conf.d \
	--env=MYSQL_ROOT_PASSWORD=c62b76c8cd172950ef \
	--env=TZ=Asia/Shanghai \
	--network=bridge \
	--privileged \
	-p 3306:3306 \
	--expose=33060 \
	--restart=always \
	mysql:8.4.0 \
	mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 

 

 

THE END
分享
二维码
打赏
海报
mac迁移本机docker应用
当需要将 Docker 应用从一台服务器迁移到另一台服务器时,首先,需收集待迁移 Docker 应用(容器)的创建命令,这是迁移的基础信息。 如果找不到了那就可以通……
<<上一篇
下一篇>>