在日常的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/devtmpfs以及通过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. 从容器1拷贝到宿主机。
  2. 从宿主机拷贝到容器2。

阅读更多
支持ing


慵懒的猫mi
1 声望0 粉丝