Docker教程-文件传输

Docker文件传输

简介

本文介绍如何在宿主机和Docker容器之间进行文件传输,主要采用两种方法,分别是cp拷贝方法和volume挂载方法两种,后者为官方推荐方法之一,效率更高。

拷贝命令

docker cp 本地文件路径 ID全称:容器内文件路径命令将主机文件拷贝到容器中,而docker cp 本地文件路径 ID全称:容器内文件路径命令将容器内文件拷贝到主机中。

下面,具体介绍用法。

首先,创建一个容器,指定name(可以不指定,这里为了方便)。具体命令执行情况如下,容器创建运行后返回的长字符串就是容器ID全称,也是cp命令需要使用的,但是随着任务的处理,这个ID需要重新查询。

在这里插入图片描述

通过执行docker ps -a可以查询到容器的短Id和容器名称,知道任意一个均可通过docker inspect -f '{{.Id}}' 短Id/容器名称命令查询该容器的完整长Id。

在这里插入图片描述

知道了完整Id,就可以使用本节开头处提到的命令进行主机和容器间的文件传输,具体执行情况如下,已经进行了图片备注。

在这里插入图片描述

同样的,将容器内的文件传输到主机中,也是类似可行的。

在这里插入图片描述

挂载方式

这种方法相比于上面的方法效率更高,也是官方推荐的三种Docker文件管理方法之一,具体点击链接查看即可。

普通卷

首先,创建一个Volume,指定名称即可。创建的命令为docker volume create 名称,查看创建的Volume信息命令为docker volume inspect 名称,如下图所示,其中Mountpoint这一项就是挂载点,也就是主机和容器进行文件传输的目录。

在这里插入图片描述

在通过run命令启动一个容器的时候可以通过-v选项将主机目录挂载到容器中,此时主机的文件变动会影响容器内的对应目录,反之,容器内指定目录的文件变动也会影响主机。具体的命令为docker run -it --name test-container -v volume名称:容器对应目录 镜像名 可执行文件,示例如下图。有点需要特别注意,上面命令中的volume名称也可以使用主机中的文件目录,这样可以创建一个指定位置的目录来进行文件传输,而不用由docker指定。

在这里插入图片描述

数据卷

还有一种提到的很多的方法,就是使用数据卷容器来实现多个容器之间的数据共享,具体如下。

首先,创建一个数据卷容器名为dbdata并将其中的/db_data目录作为Volume挂载目录,具体命令为sudo docker run -it -v /db_data --name dbdata ubuntu,此处没有指定volume名则系统会自动创建一个名称随机的volume用于挂载。

在这里插入图片描述

随后,在启动其他容器是,通过--volumes-from选项指定数据卷容器的名称即可将该容器挂载的主机目录页挂载到当前容器的相同挂载目录下,下图演示这个过程。

在这里插入图片描述

其实,数据卷容器和普通卷方法是一致的,只是更方便指定那个volume而已,未必是必要的。

最后,上述提到的使用Volume进行数据传输都是要在创建容器时指定挂载的,那么是否也可以对运行中的容器动态添加挂载呢?

答案是可以的,这里也不多提,比较前者使用面较广,想要具体了解,可以自行搜索。

补充说明

本文主要介绍cp和volume命令来进行宿主机与容器之间的文件传输,文章中若有疏漏,欢迎评论指正。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周先森爱吃素

你的鼓励是我坚持创作的不懈动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值