导入导出

Docker Desktop 导入导出


导出容器到一个压缩文件的命令:

docker export -o xxx.tar 容器ID/容器Name
docker export 容器ID/容器Name > xxx.tar
参数-o,表示导出到文件
docker export bc719a5a1370 >WRF_byp.tar

或者:docker export -o WRF_byp1.tar bc719a5a1370

但是,发现了很奇怪的情况:

同样一个容器,加了o的导出语句,导出的文件明显小了很多!还以为出错了,就连续用了两次带o的语句,导出的文件WRF_byp1.tar都是一样的大小。

测试1 测试导入上述压缩文件(相同挂载文件夹)

原来容器情况:容器是安装了ubuntu系统,并且成功安装了WRF的4个编译器、1个依赖库(netCDF,安装在挂载的文件夹内)

docker import WRF_byp.tar byp/ubuntu:v1
docker import WRF_byp.tar byp_ubuntu:v1
docker import WRF_byp2.tar byp/ubuntu:v1
docker import WRF_byp1.tar byp/ubuntu:v1
前面三行命令均是要导入大文件,但是均报错:

Error response from daemon: Error processing tar file(exit status 1): archive/tar: invalid tar header

直到第四行命令,导入小文件,也就是用docker export -o命令导出压缩文件才有效!

然后将刚刚导入的镜像建立容器:

docker run --name=WRF_byp2 -it -v C:/Byp/Mount:/home/mount --entrypoint=/bin/bash byp/ubuntu:v1

进入容器后,发现挂载的目录可用:

原来的容器,是将netCDF安装在挂载的文件夹C:BypMountWRFLibraries内。新建的容器同样挂载到C:BypMount,即与原来容器相同。经过测试之前安装的4个编译器、1个依赖库,以及测试test文件夹内的程序均测试成功:

看来导出容器还是使用o参数的导出更为保险!即:

docker export -o WRF_byp1.tar bc719a5a1370

测试2 测试导入上述压缩文件(不同的挂载文件夹)

将原来容器挂载文件夹里面的内容拷贝到另外一个位置,然后再挂载。

docker run --name=WRF_byp3 -it -v C:Byp empMount:/home/mount --entrypoint=/bin/bash byp/ubuntu:v1

注意什么的建立容器命令中,挂载的路径的斜杠方向与linux方向相反,不影响效果。从Docker里面看也没有问题:

下图也可以看出,从最原始的ubuntu系统的镜像,到安装了WRF的一些部件之后(不完整),容量其实增加了不少。




BypInformation