主机host服务器和Docker容器之间的文件互传方法汇总

本文涉及的产品
云原生网关 MSE Higress,422元/月
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。


Docker渐渐成为前端的一个工具,它像一个通用包装,可以把各种环境包裹其中,从而实现跨设备的兼容。使用的过程中,往往会需要将本地的文件和docker容器内部的文件互传:将主机的文件传递给容器内,让里面的工具读写;将容器内的文件拷贝出来,修改了再传入...

一、主机到 Docker 容器/镜像的文件传输

将文件从主机传输到容器或镜像中,可以在容器启动前容器运行时进行。

1. 使用 COPYADD 指令(构建镜像时)

当你在创建 Docker 镜像时,Dockerfile 提供了两条指令 COPYADD,它们用于将主机上的文件复制到镜像中。

  • COPY 指令:将主机的文件或目录复制到镜像的指定路径。
  • ADD 指令:除了 COPY 的功能外,还支持复制远程文件(如 URL)并自动解压压缩文件(如 .tar)。
示例
# Dockerfile
# 从主机的工作目录将文件复制到镜像的 /app 目录 
COPY ./myapp /app 
# 或者使用 ADD 指令(可以解压 .tar 文件) 
ADD ./myarchive.tar.gz /app

image.gif

这种方式适用于在构建镜像时预先将主机文件打包进镜像内。它的优点是镜像内的文件是静态的,适合分发和部署。

需要注意的是,复制文件不能跨越上下文,比如你构建的镜像在 /a/b/c目录,无法将/a目录下的文件复制到镜像内,或是COPY ../xxx 的也不行***

2. 使用 docker run-v 选项(容器启动时挂载卷)

当容器启动时,可以通过 -v--mount 选项将主机目录挂载到容器中。这种方法不会将文件打包进镜像,而是在容器运行时实时访问主机上的文件。

示例
docker run -v /path/on/host:/path/in/container my-container

image.gif

在此示例中,主机的 /path/on/host 目录会挂载到容器的 /path/in/container 目录中。容器中的应用可以实时访问和修改主机上的文件,这种方式非常适合开发时同步文件。

3. 使用 docker cp 命令(运行时复制)

docker cp 命令允许在容器运行时将文件从主机复制到容器中。

示例:
docker cp /path/on/host my-container:/path/in/container

image.gif

这种方式适合偶尔的文件传输,不需要重启容器。你可以在容器运行时向容器内添加或更新文件。

二、Docker 容器/镜像到主机的文件传输

Docker 同样提供多种方法将文件从容器或镜像传输到主机中。

1. 使用 docker cp 命令

最直接的方法是使用 docker cp 命令,它允许从正在运行的容器或已经停止的容器中将文件复制到主机。docker cp 是一个非常灵活的工具,它既支持文件也支持目录的传输。

示例:
# 从正在运行的容器中复制文件到主机 
docker cp my-container:/path/in/container /path/on/host

image.gif

即使容器已经停止,docker cp 仍然可以工作,因为 Docker 会保留容器的文件系统状态,直到容器被删除。

2. 在容器启动时挂载卷(双向传输)

如前所述,使用 docker run -v--mount 选项可以实现主机与容器之间的文件共享。由于这是双向传输,因此容器对挂载卷中数据的修改会同步到主机上。

示例:
docker run -v /path/on/host:/path/in/container my-container
# docker exec -it xxxx sh
# cp xxx /path/in/container/a.bin 
# 在容器内执行复制就可以传出来,外部复制到这个目录就传进去了,类似共享目录

image.gif

容器内的任何文件更改都会反映在主机的 /path/on/host 目录中。这种方式对于需要实时同步数据的情况非常有效,例如开发时频繁修改的文件。

3. 延伸之复制镜像文件到本地

此时就需要用docker run使用镜像启动容器,然后再利用docker cp复制到本地。使用场景或实例参考我之前的博文:

三、适合场景的选择

  • 使用 COPY/ADD 指令:适合在构建镜像时静态地将文件打包进镜像,适合用于镜像的分发和部署。
  • 使用 docker run -v 挂载卷:适合开发环境或需要实时同步文件的场景,避免了每次修改文件都需要重启容器。
  • 使用 docker cp:适合容器运行时或容器停止后从容器中提取文件,适用于需要从容器中临时获取或更新文件的情况。

四、注意事项

  1. 权限问题:在挂载主机目录到容器时,容器内的用户权限可能会与主机用户不一致,导致文件无法访问或修改。可以通过设置正确的权限或用户来解决这个问题。
  2. 容器挂掉后的文件传输:即使容器已经停止,docker cp 仍然可以从停止的容器中提取文件。容器删除前,文件系统状态会被保留。
  3. 性能影响:在使用 -v 挂载卷时,主机与容器间的文件交互性能可能会受到一定影响,特别是在处理大量文件时,需要测试性能是否满足要求。

相信看到这里,记得动手操练下。相信你就能够熟练掌握docker和主机之间的文件互转了,其实docker就是一个文件系统的描述,一层层的累起来,镜像是抽象的定义类似Class,容器类似实例化的对象,通过多种方法实现容器和主机的文件互转就可以,甚至可通过http哦

相关文章
|
2月前
|
缓存 监控 持续交付
|
24天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
72 2
|
26天前
|
人工智能 弹性计算 关系型数据库
学生免费领取阿里云服务器一年的方法,以及各种活动
学生可以免费领取阿里云服务器一年,新人可获2核4G,非新人2核2G。访问链接注册并完成学生认证,领取300元无门槛优惠券,购买轻量应用服务器。此外,还有多项活动可赢取实物奖品。
126 2
|
2月前
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
37 1
|
2月前
|
Web App开发 安全 网络安全
tplink虚拟服务器设置方法
为了更全面地理解云服务及其在企业应用中的角色,推荐访问,他们提供了一系列高性能、安全稳定的云服务器解决方案,包括但不限于香港云服务器、高防服务器等,特别适合寻求全球化业务扩展的企业。蓝易云不仅拥有全球化的基础设施布局,还提供针对各种行业定制的全栈云解决方案,助力企业实现云端部署,跨越传统界限,即刻启航云端之旅。
35 0
|
2月前
|
弹性计算 数据安全/隐私保护 Windows
阿里云国际版无法远程连接Windows服务器的排查方法
阿里云国际版无法远程连接Windows服务器的排查方法
|
11天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
17天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
18天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
16天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。