2024-11-28 17:24:41,某些文章具有时效性,若有错误或已失效,请在下方留言。Docker 容器与主机之间文件或者文件夹的拷贝是经常遇到的场景。Docker 提供了docker up 命令,可以轻松实现容器与主机之间文件或者文件夹的拷贝。
docker cp命令语法
docker cp命令的基本语法,如下
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
CONTAINER容器的名称或者 ID,容器可以是停止也可以是运行的;
SRC_PATH源文件或者目录的路径;
DEST_PATH目标路径;
OPTIONS 的参数
-a: 将复制的文件或目录保留其原始属性,包括所有者、权限等。-L: 如果SRC_PATH是一个符号链接,则复制链接指向的文件或目录。
SRC_PATH
SRC_PATH 是一个指定的文件时:
- 当
DEST_PATH不存在,创建DEST_PATH所需的文件夹,文件正常保存到DEST_PATH中; - 当
DEST_PATH不存在,并以/结尾,命令将报错,目标目录必须存在; - 当
DEST_PATH存在并且是一个文件,目标被源文件的内容覆盖; - 当
DEST_PATH存在并且是目录,使用SRC_PATH中的基本名称将文件复制到此目录中。
SRC_PATH 是一个指定的目录时:
- 当
DEST_PATH存在并且是目录时,复制将正常复制SRC_PATH不以/.结尾,源目录复制到此目录SRC_PATH以/.结尾,源目录的内容被复制到该目录中
- 当
DEST_PATH存在并且是一个文件时,复制将报错,因为无法将目录复制到文件中 - 当
DEST_PATH不存在时,将新创建DEST_PATH为路径的目录,并将源目录的内容复制到该目录中
使用示例
容器到主机
容器复制文件到主机
1. 主机目录已经存在
将 a01ce10c49ca 容器的 /app/web/public/logo/logo-site.png 文件复制到 root 目录下的命令
docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./
运行的结果如下所示

2. 主机目录已经不存在,不以/结尾
将 a01ce10c49ca 容器的 /app/web/public/logo/logo-site.png 文件复制到 ai 目录下的命令
docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./ai
相当于进行了文件重命名,将
logo-site.png文件重命名为ai。
运行的结果如下所示

3. 主机目录已经不存在,并且以/结尾
将 a01ce10c49ca 容器的 /app/web/public/logo/logo-site.png 文件复制到 /root/ai/ 目录下的命令
docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./ai/
运行命令,结果如下图,因为路径不存在,所以会报错,没有这个目录

4. 复制到已存在的文件
docker cp a01ce10c49ca:/app/web/public/logo/logo-site.png ./a.txt
运行命令,结果如下图

容器复制目录到主机
将 a01ce10c49ca 容器的 /app/web/public/logo 文件复制到 root 目录下的命令
docker cp a01ce10c49ca:app/web/public/logo /root
运行命令,结果如下图:

主机到容器
从主机复制文件到容器
将主机的a.txt 文件复制到容器a01ce10c49ca中,命令如下所示
docker cp a.txt a01ce10c49ca:/app/web/public/logo/
运行命令,结果如下所示

从主机复制目录到容器
将主机的svg 目录复制到容器/app/web/public/logo/中,命令如下所示
docker cp svg a01ce10c49ca:/app/web/public/logo/
运行命令,结果如下所示














暂无评论内容