Linux中将文件放入Docker容器中的文件夹

Docker 是一个流行的容器化平台,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后可以在任何支持Docker的机器上运行。在开发过程中,我们经常需要将文件从宿主机复制到Docker容器中,或者从Docker容器复制到宿主机。本文将详细介绍如何在Linux系统中实现这一操作。

准备工作

在开始之前,请确保你已经安装了Docker。如果尚未安装,可以通过以下命令安装:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

将文件放入Docker容器

方法一:使用docker cp命令

Docker提供了一个非常实用的命令docker cp,用于在宿主机和Docker容器之间复制文件或文件夹。其基本语法如下:

docker cp [OPTIONS] SRC_PATH DEST_PATH
  • SRC_PATH:源路径,可以是宿主机上的文件或文件夹路径。
  • DEST_PATH:目标路径,可以是容器内的文件或文件夹路径。
示例

假设我们有一个名为my_container的Docker容器,我们想要将宿主机上的/path/to/local/file.txt文件复制到容器的/app目录下:

docker cp /path/to/local/file.txt my_container:/app/

方法二:使用docker exec命令

另一种方法是使用docker exec命令,结合管道将文件传输到容器中。这种方法通常用于传输较大的文件或文件夹。

示例

假设我们想要将宿主机上的/path/to/local/folder文件夹复制到容器的/app目录下:

docker exec -it my_container tar -czf - /app | tar -xzf - -C /path/to/local/folder

从Docker容器中取出文件

方法一:使用docker cp命令

与将文件放入容器类似,我们可以使用docker cp命令将文件从容器复制到宿主机。

示例

假设我们想要从容器的/app目录下复制file.txt文件到宿主机的/path/to/local/目录:

docker cp my_container:/app/file.txt /path/to/local/

方法二:使用docker exec命令

同样,我们也可以使用docker exec命令结合管道将文件从容器传输到宿主机。

示例

假设我们想要从容器的/app目录下复制整个文件夹到宿主机的/path/to/local/folder目录:

docker exec -it my_container tar -czf - /app | tar -xzf - -C /path/to/local/folder

关系图

以下是docker cpdocker exec命令之间的关系图:

erDiagram
    CP ||--o| TAR : "使用"
    EXEC ||--o| TAR : "使用"
    CP {
        int id
        string src_path
        string dest_path
    }
    EXEC {
        int id
        string command
        string container_id
    }
    TAR {
        string command
    }

表格

以下是docker cpdocker exec命令的比较表格:

特性 docker cp docker exec + tar
易用性
速度
适用场景 小文件或少量文件 大文件或文件夹
命令复杂度

结论

在Linux系统中,将文件放入Docker容器或从Docker容器中取出文件是一个常见的需求。本文介绍了两种主要的方法:使用docker cp命令和使用docker exec命令结合管道。docker cp命令简单易用,适用于小文件或少量文件的传输;而docker exec命令虽然命令复杂度较高,但适用于大文件或文件夹的传输。开发者可以根据实际需求选择合适的方法。