将已有容器部署到其他服务器
datehoer 2/12/2023 docker
# 将已有容器部署到其他服务器
步骤简述:将容器保存成镜像——将镜像打成tar包,压缩成tar.gz——使用scp命令将文件传输到目标服务器——将tar.gz解压成tar包,载入镜像——docker run 运行镜像创建容器
Step1:将容器保存成镜像
$ docker ps -a
$ docker commit -a "eula" -m "commit uptime-kuma" 1c786853ea40 eula/uptime-kuma:v1.0
$ docker images
1
2
3
2
3
说明:-a后面的是提交用户的用户名,-m后面的是提交信息,1c786853ea40是容器id,最后是镜像名及tag,打包出来的镜像如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
eula/uptime-kuma v1.0 b217262a8fe7 About a minute ago 323MB
1
2
2
Step2:将镜像打包并压缩
$ 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
1
2
3
2
3
Step3:将文件传输到目标服务器
$ scp -P port /root/eula-uptime-kuma-v1.0.tar.gz root@ip:/root/eula-uptime-kuma-v1.0.tar.gz
1
Step4:解压并载入镜像
$ 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
3
4
2
3
4
载入出来的镜像如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
eula/uptime-kuma v1.0 b217262a8fe7 About an hour ago 323MB
1
2
2
Step5:运行镜像创建容器
$ docker run -d --restart=always -p 3001:3001 --name uptime-kuma eula/uptime-kuma:v1.0
$ docker ps
1
2
2
注意事项:
[1] 通过容器打Docker镜像要比Dockerfile生成的包要大(里面有很多没用的东西),尽量使用后者,但一些需要离线部署并且需要自动下载算法模型的除外。
[2] 直接对设置挂载的容器打包,会导致通过挂载加进去的文件并没有加进去(打出来的镜像不包含挂载进去的文件),可以再创建个不挂载的容器,把文件替换进去,再对这个不挂载的容器打包。