将已有容器部署到其他服务器

将已有容器部署到其他服务器

步骤简述:将容器保存成镜像——将镜像打成tar包,压缩成tar.gz——使用scp命令将文件传输到目标服务器——将tar.gz解压成tar包,载入镜像——docker run 运行镜像创建容器

Step1:将容器保存成镜像

1
2
3
$ docker ps -a
$ docker commit -a "eula" -m "commit uptime-kuma" 1c786853ea40 eula/uptime-kuma:v1.0
$ docker images

说明:-a后面的是提交用户的用户名,-m后面的是提交信息,1c786853ea40是容器id,最后是镜像名及tag,打包出来的镜像如下:

1
2
REPOSITORY                                          TAG            IMAGE ID       CREATED              SIZE
eula/uptime-kuma v1.0 b217262a8fe7 About a minute ago 323MB

Step2:将镜像打包并压缩

1
2
3
$ docker save -o eula-uptime-kuma-v1.0.tar eula/uptime-kuma:v1.0
$ tar -zcvf eula-uptime-kuma-v1.0.tar.gz eula-uptime-kuma-v1.0.tar
$ rm -f eula-uptime-kuma-v1.0.tar

Step3:将文件传输到目标服务器

1
$ scp -P port /root/eula-uptime-kuma-v1.0.tar.gz root@ip:/root/eula-uptime-kuma-v1.0.tar.gz

Step4:解压并载入镜像

1
2
3
4
$ tar -zxvf eula-uptime-kuma-v1.0.tar.gz
$ docker load -i eula-uptime-kuma-v1.0.tar
$ docker images
$ rm -f eula-uptime-kuma-v1.0.tar

载入出来的镜像如下:

1
2
REPOSITORY                                      TAG             IMAGE ID        CREATED               SIZE
eula/uptime-kuma v1.0 b217262a8fe7 About an hour ago 323MB

Step5:运行镜像创建容器

1
2
$ docker run -d --restart=always -p 3001:3001 --name uptime-kuma eula/uptime-kuma:v1.0
$ docker ps

注意事项:

[1] 通过容器打Docker镜像要比Dockerfile生成的包要大(里面有很多没用的东西),尽量使用后者,但一些需要离线部署并且需要自动下载算法模型的除外。

[2] 直接对设置挂载的容器打包,会导致通过挂载加进去的文件并没有加进去(打出来的镜像不包含挂载进去的文件),可以再创建个不挂载的容器,把文件替换进去,再对这个不挂载的容器打包。

作者

datehoer

发布于

2023-02-12

更新于

2023-10-19

许可协议

评论