不运行容器,如何直接将镜像中的文件拷贝出来?
我发现一个问题:随着对于docker的理解,惊现出很多更加神奇的方法······
比如,之前我要从镜像中拷贝出来一个文件的时候,一般都是先docker run起来一个镜像,然后通过docker cp的方式将镜像中的内容拷贝出来,一直是这样,也觉得比较麻烦,直到昨天,我看了一个docker官方的文档,启发了我。
具体是什么方法呢,接下来,为你逐一揭晓······
其实也很简单,就是docker的一个已经存在的命令,container
首先,基于镜像创建一个容器(container create):
docker container create --name test01 nginx:1.13.5
查看容器的状态:
[root@nctest-snap-test-02 ~]# docker container ls -a | grep test01 68e04f0cb413 nginx:1.13.5
可以看到,这是一个“Created”状态的容器。也就是说,并没有运行
然后,将需要的文件或者目录从容器中拷贝出来:
[root@nctest-snap-test-02 ~]# docker container cp test01:/etc/nginx/nginx.conf . [root@nctest-snap-test-02 ~]# ls nginx.conf
注意,注意!是docker container cp,而不是docker cp
拷贝之后,将这个容器删除掉
[root@nctest-snap-test-02 ~]# docker container rm -f test01 test01
到这里,从容器中拷贝文件的过程就完成了,我们看到,和之前的方式的区别,就是run的命令,不run,就更能保证容器中文件的原始性。
当然了,从运行的容器中拷贝文件,要用到docker run,然后 docker cp