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/
运行命令,结果如下所示
暂无评论内容