[From] https://blog.csdn.net/huludan/article/details/52641090

https://my.oschina.net/piorcn/blog/324202

http://blog.csdn.net/yangzhenping/article/details/43667785

docker可以支持把一个宿主机上的目录挂载到镜像里。

docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash

通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。

现在镜像内就可以共享宿主机里的文件了。

默认挂载的路径权限为读写。如果指定为只读可以用:ro

docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash

docker还提供了一种高级的用法。叫数据卷。

数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。

看示例:

docker run -v /home/dock/Downloads:/usr/Downloads  --name dataVol ubuntu64 /bin/bash

创建一个普通的容器。用--name给他指定了一个名(不指定的话会生成一个随机的名子)。

再创建一个新的容器,来使用这个数据卷。

docker run -it --volumes-from dataVol ubuntu64 /bin/bash

--volumes-from用来指定要从哪个数据卷来挂载数据。

 

如何在Docker容器内外互相拷贝数据?

从容器内拷贝文件到主机上

  1. docker cp <containerId>:/file/path/within/container /host/path/target

从主机上拷贝文件到容器内

参考自:

http://stackoverflow.com/questions/22907231/copying-files-from-host-to-docker-container

1.用-v挂载主机数据卷到容器内

  1. docker run -v /path/to/hostdir:/mnt $container
  2. 在容器内拷贝
  3. cp /mnt/sourcefile /path/to/destfile

2.直接在主机上拷贝到容器物理存储系统

A. 获取容器名称或者id :

  1. $ docker ps

B. 获取整个容器的id

  1. $ docker inspect -f   '{{.Id}}'  步骤A获取的名称或者id

C. 在主机上拷贝文件:

  1. $ sudo cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE
  2. 或者
  3. $ sudo cp path-file-host /var/lib/docker/devicemapper/mnt/123abc<<id>>/rootfs/root

例子:

  1. $ docker ps
  2. CONTAINER ID      IMAGE    COMMAND       CREATED      STATUS       PORTS        NAMES
  3. d8e703d7e303   solidleon/ssh:latest      /usr/sbin/sshd -D                      cranky_pare
  4. $ docker inspect -f   '{{.Id}}' cranky_pare
  5. or
  6. $ docker inspect -f   '{{.Id}}' d8e703d7e303
  7. d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5
  8. $ sudo cp file.txt /var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5

3.用输入输出符

  1. docker run -i ubuntu /bin/bash -c 'cat > /path/to/container/file' < /path/to/host/file/

或者

  1. docker exec -it <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/

[转] docker基础知识之挂载本地目录的更多相关文章

  1. docker基础知识之挂载本地目录

    docker可以支持把一个宿主机上的目录挂载到镜像里. docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash ...

  2. docker挂载本地目录和数据卷容器

    1.docker挂载本地目录 docker可以支持把一个宿主机上的目录挂载到镜像里. 交互模式运行docker run -it -v /home/dock/Downloads:/usr/Downloa ...

  3. docker挂载本地目录的方法总结

    docker挂载本地目录的方法总结: Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录, ...

  4. Docker03 Docker基础知识、Docker实战

    1 Docker基础知识 1.1 什么是Docker Docker是一个可以装应用的容器,就像杯子可以装水.书包可以装书一样:docker官网 Docker是Docker公司开发的,并开源到GitHu ...

  5. Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    Linux基础知识之挂载详解(mount,umount及开机自动挂载) 转载自:http://www.linuxidc.com/Linux/2016-08/134666.htm 挂载概念简述: 根文件 ...

  6. 庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署

    庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署 一.简介      我们在上一篇文章<庐山真面目之八微服务架构 NetCore 基于 Dockerfile ...

  7. Docker中运行nginx并挂载本地目录到镜像中

    1.1 从hup上pull镜像1.2 创建将要挂载的目录1.3 先要有配置文件才能启动容器1.3.1 vim /data/nginx/conf/nginx.conf1.3.2 vim /data/ng ...

  8. Docker 基础知识 - 使用绑定挂载(bind mounts)管理应用程序数据

    绑定挂载(bind mounts)在 Docker 的早期就已经出现了.与卷相比,绑定挂载的功能有限.当您使用绑定挂载时,主机上的文件或目录将挂载到容器中.文件或目录由其在主机上的完整或相对路径引用. ...

  9. docker学习---docker基础知识

    目录 docker的基础 1.安装docker 2.使用镜像 3.镜像迁移|导入和导出 4.docker Hub介绍 5.搭建私有镜像仓库 5.1.docker开源的镜像分发工具--docker Re ...

随机推荐

  1. c语言练习 二维数组 年平均降水量 月平均降水量

    #define YEARS 5#define MONTHES 12 int main(void) { const float rain[YEARS][MONTHES] = { {4.3,4.3,4.3 ...

  2. Ajax——三种数据传输格式

    一.HTML HTML由一些普通文本组成.如果服务器通过XMLHTTPRequest发送HTML,文本将存储在responseText属性中. 从服务器端发送的HTML的代码在浏览器端不需要用Java ...

  3. java发送post 的json请求

    package com.elink.estos.mq.mqmanager; import java.io.IOException; import java.io.InputStream; import ...

  4. HTML总结之:HTML5的DOCTYPE 与 meta 属性介绍

    HTML5头部常用介绍: [DOCTYPE html] 声明文档类型为HTML5文件.   [meta标签] <meta> 元素可提供有关页面的元信息(meta-information), ...

  5. AutoLayout自动布局,NSLayoutConstraint 视图约束使用

    一.方法 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:<#(id)#> attribut ...

  6. Linq学习<三> linq to entity

    之前一直用sql选择出数据放在一个集合中,然后再用Linq或者lambda去操作数据,今天学了Linq to entity 才知道原来linq产生是为了Entity.也就是EDM(实体数据模型) 关于 ...

  7. wc.exe指令(C++)

    https://github.com/kielingpao/wc 项目相关要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.ex ...

  8. javaweb分页

    package com.aishang.util; //分页 public class Pagemethod { public static int[] getPageArray(int selInd ...

  9. Jquery 页面元素事件绑定

    场景: 用一个Table来展示数据信息列表,通过鼠标点击Table中的Tr来获取到当前选中的数据行信息. <table class="Table" width="1 ...

  10. Ajax GET

    $ajax的post请求提交方式: Controller: @RequestMapping("/emps") @ResponseBody public Msg getEmps(@R ...