将 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 |
备份并导入完成