Docker宿主机和容器之间文件拷贝docker copy

前言:

Docker 数据管理

在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行

数据共享,这必然涉及容器的数据管理操作

容器中的管理数据主要有两种方式:

数据卷 Data Volumes 容器内数据直接映射到本地主机环境;

数据卷容器(Data Volume Containers 使用特定容器维护数据卷

当然还有最原始的copy方式,这个也是管理数据的方式,但是基本不会用到;

最原始的copy方式管理数据:

宿主机文件 copy to 容器内

docker cp 需要拷贝的文件或者目录   容器名称:容器目录

实例:

docker cp /liuwenwu/docker/ mycentos02:/liuww/softwar

容器内 copy to 宿主机

docker cp 容器名称:容器目录    宿主机目录

实例:

docker cp mycentos02:liuww/softwar/docker/bbb.txt /liuwenwu/docker

数据卷

数据卷(Data Volumes)

数据卷是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,

 它可以提供很多有用的特性:

1.数据卷 可以在容器之间共享和重用

2.对数据卷的修改会立马生效

3.对数据卷的更新,不会影响镜像

4.数据卷 默认会一直存在,即使容器被删除

数据卷相关操作

1.创建数据卷

docker volume create my-vol

此时,数据卷默认会放到/var/lib/docker/volumes路径下,会发现所新建的数据卷位置,查看命令如下:

## 参数可以为数字“1”,字母L:大小写均可,但效果不一样

ls -1 /var/lib/docker/volumes

 2.查看所有的数据卷

docker volume ls

3.查看指定数据卷的详细信息(显示一个JSON格式的数据)

docker volume inspect my-vol 

4.删除一个volume

 docker volume rm my-vol

注1:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,

并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间,

所以要及时删除

## 挂载数据卷,最好是通过run而非create/start创建启动容器

## create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以

5.启动一个挂载数据卷的容器

 ## demo1
docker run -d \
-it \
--name mycentos03\
--mount source=my-vol,target=/webapp \
centos:7

注意:此行命令执行后的效果是,宿主机路径/var/lib/docker/volumes/my-vol/_data与tomcat01容器路径/webapp完成映射

 ## demo2
docker run -d \
-it \
--name tomcat02 \
--mount type=bind,source=/liuww/data,target=/root/webapp02 \
centos:7

注1:linux命令结尾加斜杠有什么用

加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行输入,直到读到结束符,如回车

注2:source=my-vol,target=/webapp

my-vol为要挂载的数据卷,如果数据卷不存在,docker会自动创建

/webapp为容器上目录,如果目录不存在, Docke会自动创建

注3:mount选项高级用法

--mount选项的type参数支持三种类型的数据卷

--mount标志:由多个名值对组成,逗号分隔,每个键值由 <key> = <value> 元组组成

1.type=volume普通数据卷(默认即这种类型),映射到主机/var/lib/docker/volumes路径下;

--mount type=volume,source=my-vol,target=/webapp

注:这是type的默认值

2.bind:绑定数据卷,映射到主机指定路径下;

--mount type=bind,source=/webapp,destination=/webapp2

3.tmpfs :临时数据卷,只存在于内存中

docker run -d \

-it \

--name tmptest \

--mount type=tmpfs,destination=/app \

nginx:latest

数据卷容器

数据卷容器

如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。

数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载

数据卷容器相关操作

1.新建数据卷容器

docker run -di --name db_data -v /db_data centos:7

注:-v 后面接的共享数据真实存放路径

 2.用容器db1、db2测试数据卷容器是否可用

docker run -di --name db1 --volumes-from db_data centos:7
docker exec -it db1 bash
cd db_data docker run -di --name db2 --volumes-from db_data centos:7
docker exec -it db2 bash
cd db_data

随便创建一个aaa.txt文件就可以查看效果了

效果:上面例子中db1、db2通过db_data来共享了数据

docker数据卷(Data Volumes)的更多相关文章

  1. Docker之数据卷(Data Volumes)操作

    目的: 前言 Docker宿主机和容器之间文件拷贝 数据卷 数据卷容器 前言 Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享, ...

  2. Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解

    此文来源于:https://yq.aliyun.com/ziliao/43471 参考原文件之外,做了些修改. Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录 ...

  3. 数据卷(Data Volumes)

    Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...

  4. docker 数据卷管理

    在生产环境中使用docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这涉及到容器对数据管理的操作 容器对数据的管理主要有两种方式: 数据卷(Data Volumes): 容器内 ...

  5. Docker 数据卷和数据卷容器

    1.本节课主要讲解如何在Docker内部及容器之间管理数据.容器中管理数据主要有两种方式:数据卷(Data volumes)数据卷容器(Data volume containers) 2.数据卷:是一 ...

  6. docker 数据卷 ---- 基础篇

    用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作.容器中管理数据主要有两种方式:数据 ...

  7. 实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作

    Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3 ...

  8. Docker 数据卷与容器互联

    Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  9. docker 数据卷之进阶篇

    笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前 ...

随机推荐

  1. element UI+vue关于日期范围选择的操作,picker-options属性的使用

    一般 <el-date-picker />使用会出现起始日期和结束日期,结束日期不能早与起始日期,选择了其实日期后,结束日期大于起始日期的不可选,置灰,同理先选结束日期后再选起始日期,那么 ...

  2. 电脑软件安装过程文档.BA

    MD 01-打印并阅读-电脑软件安装过程文档.BAT-即此批处理脚本文档MD 02-阅读-电脑软件安装经验教训文档.DOCX-MD 03-制作-杏雨梨云USB维护系统2019中秋版之国庆更新-可启动U ...

  3. 从小白角度探索Android事件分发机制

    今早来上班时看到郭神这边文章超赞,剧情很好引人入胜,特此备份! https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650244386 ...

  4. 被字节跳动、小米、美团面试官问的AndroidFramework难倒了? 这里有23道面试真题,助力成为offer收割机!

    目录 1.Android中多进程通信的方式有哪些?a.进程通信你用过哪些?原理是什么?(字节跳动.小米)2.描述下Binder机制原理?(东方头条)3.Binder线程池的工作过程是什么样?(东方头条 ...

  5. 解决Win10用户VS Code的C/C++更新到1.6.0后无法调试的问题

    今天突然遇到一个问题 Win10上 vscode C++突然无法正常调试 在运行调试后 编译成功后没有任何提示 直接就停止了 没有错误 不运行程序 尝试重新写一遍launch.json 自动生成lau ...

  6. 关于Servlet技术

    1.Servlet 技术           a)什么是 Servlet                     1.Servlet 是 JavaEE 规范之一.规范就是接口              ...

  7. 了解cookie和storage的区别及优缺点

    共同点:用于数据的存储. 区别: 1.是否需要添加到http请求头? HTTP Cookie(cookie):在客户端存储会话信息,要求服务器对任意HTTP请求发送set-cookie HTTP头作为 ...

  8. Linux中DNS分离解析

    目录 一.分离解析概述 二.DNS分离解析实验 要求 实验步骤 一.分离解析概述 分离解析:同一个dns服务器,同一个域名情况下,不同网段进行访问会解析出不同的IP地址 分离解析的域名服务器实际也是主 ...

  9. 适配Android4.4~Android11,调用系统相机,系统相册,系统图片裁剪,转换文件(对图片进行上传等操作)

    前言 最近Android对于文件的许多方法进行了修改,网络上又没有对Android4到Android11关于系统相机.系统相册和系统裁剪的适配方案,我花了几天事件总结了一下,先上源码 DEMO源码 先 ...

  10. Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel

    Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel 在博文"在Asp.Net Core 使用 Sqlite 数据库"中创建了ASP.NET Co ...