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. Python - 详解 range()

    介绍 range 是一个类,不是函数 表示不可变的数字序列,通常用于在 for 循环中循环指定的次数 两种语法格式 range(stop) 表示区间 [0, stop) 内的整数序列 该区间从 0 开 ...

  2. netty系列之:netty中的ByteBuf详解

    目录 简介 ByteBuf详解 创建一个Buff 随机访问Buff 序列读写 搜索 其他衍生buffer方法 和现有JDK类型的转换 总结 简介 netty中用于进行信息承载和交流的类叫做ByteBu ...

  3. BUUCTF-[SUCTF 2019]CheckIn(.user.ini利用+exif_imagetype绕过)

    目录 分析 .user.ini使用条件 解题 参考链接 记一道.user.ini利用+exif_imagetype绕过的文件上传的题. 分析 先正经上传一张图片.回显了存储路径,同时发现还包含了一个i ...

  4. CVE-2021-3156 复现

    测试环境 OS: Ubuntu 18.04.5 LTS GCC: gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) Make: GNU Make 4.1 ...

  5. 化学专业大二转战Android开发,终于拥有了鹅厂暑期实习offer

    我是双非学校,应用化学专业,一年前我大二,现在我大三.一年前我两手空空,现在我拥有了鹅厂暑期实习的offer. 虽然结果是好的,但我春招实习的道路远没有这么简单和辉煌,它是无比坎坷的:每个人应该量力而 ...

  6. 剖析虚幻渲染体系(10)- RHI

    目录 10.1 本篇概述 10.2 RHI基础 10.2.1 FRenderResource 10.2.2 FRHIResource 10.2.3 FRHICommand 10.2.4 FRHICom ...

  7. 【硬件模块】RFIDSetting

    The Octane SDK includes the core library by acting as a wrapper for extraction, modifying, and the a ...

  8. Java常用类之时间类

    JDK8之前日期时间API 1. java.lang.System类 2. java.util.Date类 3. java.text.SimpleDateFormat类 4. java.util.Ca ...

  9. C#多线程---I/O线程实现异步请求

    一.场景 利用I/O线程来模拟浏览器对服务器请求的异步操作. 二.例子 1 using System; 2 using System.Collections.Generic; 3 using Syst ...

  10. 1.3RDD的设计与运行原理

    此文为个人学习笔记如需系统学习请访问http://dblab.xmu.edu.cn/blog/1709-2/ 提供一种通用的数据抽象 RDD典型的执行过程如下: RDD读入外部数据源(或者内存中的集合 ...