我的docker随笔7:docker容器与主机之间文件拷贝

背景

Docker提供cp命令,用于主机和容器之间相互拷贝。

docker cp命令

下面所有示例的命令都是在主机进行的。

命令形式如下:

1
docker cp <主机目录或文件的路径> <容器ID:容器路径>

示例:
运行一个容器,假设其ID为267888e2e9ec。将当前目录的demo文件拷贝到容器根目录:

1
docker cp demo/ 267888e2e9ec:/

再在这个容器修改demo文件的内容,再将其拷贝到主机(在当前目录,文件夹为demo_tmp):

1
docker cp 267888e2e9ec:/demo demo_tmp

docker cp不能使用通配符。即不使用使用demo/*这样的方式(如demo/lib*)。直接拷贝整个目录即可。出错示例如下:

1
2
3
4
5
6
7
8
# docker cp demo/*  267888e2e9ec:/
"docker cp" requires exactly 2 argument(s).
See 'docker cp --help'.

Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

注:如果文件需要过滤,先在宿主机整理好,再拷贝到一个目录即,将其拷贝到容器即可。

实践小结

有时候,容器内没有vim或vi工具,又无法联网下载,则可以使用docker cp命令实现修改文件的目的。

李迟 2018.7.26 中午