在日常的Docker容器管理中,我们经常需要在容器与宿主机之间,甚至容器与容器之间进行文件的拷贝操作。本文将详细介绍如何使用docker cp
命令以及一些其他方法来实现这些文件传输需求。
1. 需求概述
在Docker容器的日常操作中,文件拷贝是一个常见的需求。docker cp
命令提供了一个便捷的解决方案,允许我们在容器和宿主机之间复制文件或目录。
2. Docker容器与宿主机之间的文件交换
2.1 从宿主机复制到容器
docker cp
命令可以用来将文件从宿主机复制到容器中。以下是具体的命令格式:
sudo docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
CONTAINER:SRC_PATH
指定容器内的源文件或目录路径。DEST_PATH|-
指定宿主机上的目标路径,或者使用-
来通过标准输入/输出设备以流的方式读取或写入tar文件。[OPTIONS]
可选参数,如--follow-link
或-L
,使命令遵循SRC_PATH
中的符号链接。
示例操作:
# 创建容器
sudo docker run -it -d --name=ubun20 ubuntu:20.04 /bin/bash
# 将宿主机的文件复制到容器
sudo docker cp /home/username/Download/atest.zip ubun20:/root/.
2.2 从容器复制到宿主机
同样地,我们也可以将容器中的文件复制到宿主机上。命令格式如下:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
示例操作:
# 将容器中的文件复制到宿主机的另一个目录
sudo docker cp ubun20:/root/atest.zip /home/username/.
2.3 注意事项
- 容器可以是运行状态或停止状态。
- 某些路径,如
/proc
、/sys
、/dev
、tmpfs
以及通过mount命令挂载的路径,不能被复制。
2.4 另一种文件交换方式
除了docker cp
,我们还可以通过在创建容器时使用-v
参数映射宿主机目录到容器目录,实现文件交换。这种方式下,宿主机和容器都可以通过普通的cp
命令进行文件操作。
示例操作:
# 创建容器并映射目录
sudo docker run -it -d --name=ubun20 -v /home/username/testdocker:/root/test ubuntu:20.04 /bin/bash
# 通过映射的目录进行文件拷贝
sudo cp /home/username/Download/atest.zip /home/username/testdocker/.
3. 容器之间的文件交换
容器之间不能直接拷贝文件,但可以通过以下两步操作实现:
- 从容器1拷贝到宿主机。
- 从宿主机拷贝到容器2。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。