如何从docker镜像中提取和复制出里面的文件夹和文件

有时候我们想从一个docker镜像(image)中,提取和复制出里面的文件夹和文件,这个时候需要借助组合命令行了。

以docker nginx镜像为例,如果想复制预定义的nginx配置目录/etc/nginx,那么就使用如下命令:

(mkdir -p ./temp1) ; \
    (docker create --name tempcontainer nginx:1.27.2-bookworm) ; \
    (docker cp tempcontainer:/etc/nginx ./temp1) ; \
    (docker rm tempcontainer)

(使用“;”而不是“&&”是为了确保最后docker rm可以顺利执行)

这样就可以在当前shell目录下找到temp1文件夹,里面就是复制出来的内容。

如果需要直接从docker镜像里面直接打包,则可以执行如下命令:

(docker create --name tempcontainer nginx:1.27.2-bookworm) ; \
    (docker cp tempcontainer:/etc/nginx - > ./imgfile.tar) ; \
    (docker rm tempcontainer)

这样就会在当前shell目录下找到imgfile.tar压缩文件夹。

然后执行下面命令解压缩得出来的imgfile.tar:

mkdir -p ./imgfile && tar -xvf ./imgfile.tar -C ./imgfile

参考链接:

https://stackoverflow.com/questions/25292198/docker-how-can-i-copy-a-file-from-an-image-to-a-host

本页永久链接:https://www.orztip.com/?p=884&article_title=copy-files-from-docker-image