将 docker 容器打包成镜像并在另一台服务器上运行

1️⃣ 将容器打包成镜像

docker commit <container-name> <image-name>[:tag]
# example: docker commit myblog hexo-blog

会在本地生成一个新的 docker 镜像,可以通过 docker images 命令查看生成的镜像。

打包时,容器挂的目录 / 文件不会被打包进镜像。解决方案:① 在打包前为挂载的目录生成一份 copy,在另一台机器运行时你需要挂载这份 copy。② 将挂载的目录 copy 至新机器。如果打包后的镜像只需在当前服务器运行,则不需要考虑这个问题。

2️⃣ 将镜像打包成文件

docker save -o <outfile> <image-name>[:tag]
# example: docker save -o blog.jar hexo-blog

会在当前目录生成 blog.jar 文件。

3️⃣ 将打包生成的文件上传至另一台服务器
使用 scp 命令或者 ssh 工具将 blog.jar 复制到另一台服务器。

4️⃣ 新机器载入镜像

docker load --input <file>
# example: docker load --input blog.jar

会在新机器生成一个新的 docker 镜像,可以通过 docker images 命令查看生成的镜像。

5️⃣ 运行容器
导入镜像后就可以进行正常 docker run 命令了。

docker run -itd --name <container-name> <image-name>[:tag]
# example: docker run -itd --name myblog hexo-blog

备份并导入完成