比如我本地的vue项目,先打包编译为一个镜像:
docker build -t cvport .
不会编译的可以看我这篇文章:使用docker构建vue项目并成功运行在本地和线上_1024小神的博客-CSDN博客
开始将镜像保存为一个tar文件:
docker save -o cvport_vue.tar cvimage:latest
// -o 是为了防止不同平台上编译打包到别的平台load出错,亲测有效
// cvport_vue.tar 打包后的文件名称
// cvimage:latest 本地镜像名称:tag
如果不用-o参数,加载会出现错误:
root@iZwz94o0pasdkeotp1v1f4Z:/home# docker load < cvport_vue.tar
Error processing tar file(exit status 1): archive/tar: invalid tar header
执行完命令后,就会出现一个tar文件:这个文件就可以随处发放给别人用了
比如我上传到我服务器上:
然后用docker载入;
docker load -i cvport_vue.tar
然后运行一下:成功了
容器的导出和导入
导出:
docker export -o cvcontain.tar 28d51c1cc949
// -o 指定导出到 cvcontain.tar,不指定会出现不同平台不兼容问题
// 28d51c1cc949 容器的id
不指定-o,导入的时候会出现错误:
root@iZwz94o0pasdkeotp1v1f4Z:/home# docker import cvcontain.tar cvimage:v1
Error response from daemon: Error processing tar file(exit status 1): archive/tar: invalid tar header
导入:
docker import cvcontain.tar cvimage:v1
// cvcontain.tar文件名称
// cvimage:v1 导入后的镜像名:v1是版本
但是启动的时候报错了:
PS E:\Dpandata\ZatProject\cvreport> docker run -d -p 9091:80 --name cvpod2 cvimage2
docker: Error response from daemon: No command specified.
一般来说产生这个报错是因为启动的容器是被export出来的镜像,被docker export出来的镜像在启动的时候需要指定command,例如我启动上述cvimage2容器,需要指定Command Command可以通过下面命令查询到:
docker ps -a --no-trunc
查询到Command之后,运行容器:
docker run -d -p 9091:80 --name cvpod2 cvimage2 /docker-entrypoint.sh nginx -g 'daemon off;'
就可以正常启动了:
并可以正常访问: