如何在不克隆整个机器的情况下将 docker 迁移到另一台机器
how to migrate docker into another machine without cloning the entire machine
我目前以这种方式管理我的 docker for postgresql(timescaleDB),在屏幕中打开一个 docker 到后台 运行。这样我就可以随时用屏幕检查了。
screen -dmS i2
screen -S i2 -X stuff 'docker run -ti --user 1000:1000 -p 5432:5432 --name timescaledb --volume=/home/ubuntu/pgdata3:/home/postgresql/pgdata --rm -e POSTGRES_PASSWORD=sdjaisiisiauda123114892u3hihi -e PGDATA=/home/postgresql/pgdata timescale/timescaledb-ha:pg13-latest;\n'
我也在使用 EC2,我不小心请求了大容量,我想回到小容量机器。而且我已经广泛使用了这个数据库,所以我不想在新机器上重建数据。
我的问题:如何使用相同的命令将此 docker image/snapshot/instance(我的术语可能不准确)迁移到另一台机器并从另一台机器迁移 运行?
谢谢
您不需要迁移 docker 图像 - 这就是 docker 的用途。您只需要迁移数据。
--volume=/home/ubuntu/pgdata3:/home/postgresql/pgdata
这是重要的部分 - 它将数据文件夹从容器内部映射到根文件系统上的 /home/ubuntu/pgdata3
。所以-停止你的容器,压缩那个文件夹,在新机器上的相同位置解压缩它,然后 运行 在新机器上从上面的 docker 命令。
此外-您真的不需要为此使用“屏幕”-docker run --detach
(而不是-ti
)会做同样的事情。
如果您使用的是 aws 并且想让这更容易,您可以在解压缩数据之前在新机器上的那个位置安装一个 EBS 卷,将来您可以将该卷附加到一个新的机器而不是执行 zip/unzip 过程。
我目前以这种方式管理我的 docker for postgresql(timescaleDB),在屏幕中打开一个 docker 到后台 运行。这样我就可以随时用屏幕检查了。
screen -dmS i2
screen -S i2 -X stuff 'docker run -ti --user 1000:1000 -p 5432:5432 --name timescaledb --volume=/home/ubuntu/pgdata3:/home/postgresql/pgdata --rm -e POSTGRES_PASSWORD=sdjaisiisiauda123114892u3hihi -e PGDATA=/home/postgresql/pgdata timescale/timescaledb-ha:pg13-latest;\n'
我也在使用 EC2,我不小心请求了大容量,我想回到小容量机器。而且我已经广泛使用了这个数据库,所以我不想在新机器上重建数据。
我的问题:如何使用相同的命令将此 docker image/snapshot/instance(我的术语可能不准确)迁移到另一台机器并从另一台机器迁移 运行?
谢谢
您不需要迁移 docker 图像 - 这就是 docker 的用途。您只需要迁移数据。
--volume=/home/ubuntu/pgdata3:/home/postgresql/pgdata
这是重要的部分 - 它将数据文件夹从容器内部映射到根文件系统上的 /home/ubuntu/pgdata3
。所以-停止你的容器,压缩那个文件夹,在新机器上的相同位置解压缩它,然后 运行 在新机器上从上面的 docker 命令。
此外-您真的不需要为此使用“屏幕”-docker run --detach
(而不是-ti
)会做同样的事情。
如果您使用的是 aws 并且想让这更容易,您可以在解压缩数据之前在新机器上的那个位置安装一个 EBS 卷,将来您可以将该卷附加到一个新的机器而不是执行 zip/unzip 过程。