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
0
二维码
打赏
海报


mac迁移本机docker应用
当需要将 Docker 应用从一台服务器迁移到另一台服务器时,首先,需收集待迁移 Docker 应用(容器)的创建命令,这是迁移的基础信息。
如果找不到了那就可以通……

共有 0 条评论