不运行容器,如何直接将镜像中的文件拷贝出来?

我发现一个问题:随着对于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

posted @ 2022-07-27 10:46  Zhai_David  阅读(4012)  评论(2编辑  收藏  举报