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

前言:

Docker 数据管理

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

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

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

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

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

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

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

宿主机文件 copy to 容器内

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

docker cp /jt/monitorlogs/ db3:/jt/software

容器内 copy to 宿主机

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

数据卷

数据卷(Data Volumes)

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

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

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

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

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

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

数据卷相关操作

1.创建数据卷

   docker volume create my-vol

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

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

     ls - /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 mycentos02\

       --mount source=my-vol,target=/webapp3 \

       centos:

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

     ## demo2

     docker run -d \

       -it \

       --name tomcat03 \

       --mount type=bind,source=/jt/data,target=/root/webapp22 \

       centos:    

注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:
注:-v 后面接的共享数据真实存放路径

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

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

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

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

数据卷(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. docker数据卷(Data Volumes)

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

  4. Docker 容器数据卷(Data Volume)与数据管理

    卷(Volume)是容器中的一个数据挂载点,卷可以绕过联合文件系统,从而为Docker 提供持久数据,所提供的数据还可以在宿主机-容器或多个容器之间共享.通过卷,我们可以可以使修改数据直接生效,而不必 ...

  5. Docker系列教程05-Docker数据卷(Data Volume)学习

    引言 在Docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失.要想实现数据的持久化,需要将数据从宿主机挂载到容器中.目前Docker提供了三种方式将数据从宿主机挂载到 ...

  6. docker 数据卷管理

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

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

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

  8. docker-ce-17.09 数据卷和数据卷容器

    docker容器中管理数据两种方式:1.数据卷(Data Volumes)2.数据卷容器(Data Volume Dontainers) 一.数据卷特性:1.数据卷可以在容器之间共享和重用2.对数据卷 ...

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

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

随机推荐

  1. CCNA 之 十一 NAT 子网地址转换

    NAT 网络地址转换 全称:Network Address Translation 为什么需要NAT? 因为公网IP(IPv4)地址紧缺,内容地址通过NAT转换成一个公有地址去访问公网资源: 如下图展 ...

  2. MATLAB数值计算——0

    目录 MATLAB数值计算 1.solve() 2.fzero() 3.fsolve() MATLAB数值计算 MATLAB中文论坛基础板块常见问题归纳(出处: MATLAB中文论坛) 登录http: ...

  3. jsp 实现查询功能

    要求: 实现查询功能 1.数据库代码 create database mvce; use mvce; create table test2( id int not null identity, tna ...

  4. phpStorm自动生成___jb_tmp___文件

    把这个去掉就可以了

  5. 十一次作业——LL(1)文法的判断,递归下降分析程序

    1. 文法 G(S): (1)S -> AB (2)A ->Da|ε (3)B -> cC (4)C -> aADC |ε (5)D -> b|ε 验证文法 G(S)是不 ...

  6. Spring Boot 最简单整合Shiro+JWT方式

    简介 目前RESTful大多都采用JWT来做授权校验,在Spring Boot 中可以采用Shiro和JWT来做简单的权限以及认证验证,在和Spring Boot集成的过程中碰到了不少坑.便结合自身以 ...

  7. java前端与后端怎么选??

    想做这个行业,就应该了解职能以及技能需求,这样学习才能更高效.我知道一些刚刚入行的小伙伴不清楚前端.后端.到底指的是什么?两者直接的区别 前端开发 前端开发主要涉及网站和App,用户能够从浏览器上或A ...

  8. 这可能是最容易入门的socket教程了

    前言: 如今,网络编程已然成为了一个后端开发工程师需要具备的核心技能之一.因此,该博客力求提供最简单.通俗的描述方式,来描绘网络编程中常见的知识点,同时附带代码示例,后期会加上具体的抓包分析,实际项目 ...

  9. 【django后端分离】rbac组件(文件源代码+使用)

    1:用户,角色,权限,菜单表设计 from django.db import models # 用户菜单 class UserMenu(models.Model): title = models.Ch ...

  10. git 使用详解(5)—— get log 查看提交历史

    git log 查看 提交历史 在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看. 接下来的例子会用我专门用于演示的 simplegit 项目,运行下面 ...