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命令来进行宿主机与容器之间的文件传输,文章中若有疏漏,欢迎评论指正。

Docker教程-文件传输相关推荐

  1. Docker容器和本机之间的文件传输

    2019独角兽企业重金招聘Python工程师标准>>> 主机和容器之间传输文件的话需要用到容器的ID全称. 获取方法如下: 1.先拿到容器的短ID或者指定的name. 2.然后根据这 ...

  2. linux间服务器间文件传输,Linux命令scp服务器间文件传输教程

    scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 .那么你知道Linux命令scp服务器间文件传输教程么?接下来是 ...

  3. 两台电脑大文件传输的详细教程

    说到电脑间的数据传输,想必大家的脑海中立刻就会浮现出几个词,"慢"."麻烦",对于局域网内的两台电脑来说,如果是临时转移几个小文件,像是Word.PPT.PDF ...

  4. 本机和Docker容器的文件传输

    1.首先拿到容器的短ID [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ...

  5. 使用第三方FTP软件进行文件传输的教程

    使用第三方FTP软件进行文件传输教程 这里以CuteFTP 9.0为例进行示范 首先去下载CuteFTP,下载安装完成后,打开软件,通过"文件"-"新建"-&q ...

  6. 最简单的方式实现Docker与主机的文件传输复制

    主要的思路 把Docker看作是一个独立的服务器节点,使用scp指令进行文件或者文件夹的复制,但是需要注意的是当复制到本机存在的Docker中的时候,需要对端口进行声明,具体操作如下: scp -P ...

  7. linux ssh 推送文件_WinSCP软件双系统(Win-Linux)文件传输教程

    WinSCP软件是windows下的一款使用ssh协议的开源图形化SFTP客户端,也就是一个文件传输的软件,它有什么优点吗,咱们嵌入式开发中经常会将windows中的文件复制到linux系统当中,比较 ...

  8. linux ssh客户端_WinSCP软件双系统(Win-Linux)文件传输教程

    WinSCP软件是windows下的一款使用ssh协议的开源图形化SFTP客户端,也就是一个文件传输的软件,它有什么优点吗,咱们嵌入式开发中经常会将windows中的文件复制到linux系统当中,比较 ...

  9. 使用WinSCP下载和文件传输教程

    WinScp介绍 SCP工具常用于客户端与云服务器间文件交互,当然普通服务器也可以. Windows下常用开源工具WinSCP 下载与安装 下载地址为:https://winscp.net/eng/d ...

最新文章

  1. 个人计算机用户隐私保护全接触(2)
  2. 思考:开发者如何挑选最合适的机器学习框架?
  3. 轻松掌握nodeJS之npm
  4. 得到java异常printStackTrace的详细信息
  5. 垂直网站架构改造 - 怎样成为一个山寨CTO
  6. Window 7 下的某些服务不能随便禁用! 无法立即删除.exe文件,因为禁用了Application Experience服务。...
  7. js的栈堆与浅拷贝、深拷贝的理解
  8. drupal 7在一个form新增或者修改一个字段
  9. 怎样查阅电脑最大能够扩充多大的内存
  10. 在RHEL5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
  11. 一个VO(Visual Odometry)的简单实现
  12. chrome最新版本下载
  13. 网页右侧悬浮QQ在线客服代码
  14. 常用的6个跨品种套利组合
  15. PS进阶篇——如何PS软件给图片部分位置打马赛克(四)
  16. CSS——微信朋友圈图片样式实现方法
  17. YUTUc++沙盒小游戏5.0(亲测可运行)
  18. 使用sass预处理器的优劣
  19. win7中解决nodejs版本问题
  20. 盘点 yMatrix 创业的530天:1.01^530,苟日新,日日新,又日新

热门文章

  1. 搭建基础架构-ResultMsg
  2. IDEA 集成Lombok 插件-使用插件
  3. AbstractBeanFactory 生产Bean 实例对象
  4. 基于Xml 的IOC 容器-将配置载入内存
  5. RocketMQ的Consumer详解之push和pull模式(长轮询)
  6. 字符输出流写数据的其他方法
  7. 把随机数对象暴露给window成为全局对象 原型及原型链 原型的指向是否可以改变
  8. html登录注册的正则,怎么用html5编写用户注册验证程序
  9. ThreadLocal以及增强
  10. python异步框架twisted_twisted是python实现的基于事件驱动的异步网络通信构架。