Docker数据管理

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

  • 数据卷(Volumes)
  • 挂载主机目录(Bind mounts)

数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响镜像
  • 数据卷默认会一直存在,即使容器被删除

注意: 数据卷的使用,类似于Linux下对目录或文件进行mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。

Docker中提供了两种挂载方式,-v和-mount

Docker新用户应该选择 --mount参数

经验丰富的Docker使用者对-v或者--volume已经很熟悉了,但是推荐使用-mount参数。

创建一个数据卷

docker volume create my-volume

查看指定数据卷的信息

docker volume inspect my-volume

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

在用docker run命令的时候,使用--mount标记来将数据卷挂载到容器里。

创建一个名为session-web的容器,并加载一个数据卷到容器中的/webapp目录。

# 方法一
docker run --name session-web -d -p 8888:8080 --mount source=my-volume,target=/webapp session-web:latest
# 方法二
docker run --name session-web -d -p 8888:8080 -v my-volume:/webapp session-web:latest

删除数据卷

docker volume rm my-volume

数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。

如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用docker rm -v这个命令。

无主的数据卷可能会占据很多空间,要清理请使用以下命令

docker volume prune

挂载主机目录

使用--mount标记可以指定挂载一个本地主机的目录到容器中去

# 方法一
docker run --name session-web -d -p 8888:8080 \
-v my-volume:/webapp \
session-web:latest
# 方法二
docker run --name session-web -d -p 8888:8080 \
--mount type=bind,source=/src/webapp,target=/opt/webapp session-web:latest

上面的命令加载主机的/src/webapp目录到容器的/opt/webapp目录。这个功能在进行测试的时候十分方便,比如用户可以放置一些程序到本地目录中,来查看容器是否正常工作。

本地目录的路径必须是绝对路径

以前,使用-v参数时如果本地目录不存在Docker会自动为你创建一个文件夹。

现在,使用--mount参数时如果本地目录不存在,Docker会报错。Docker挂载主机目录的默认权限是读写,用户也可以通过增加readonly指定为只读。

挂载一个本地主机文件作为数据卷

--mount标记也可以从主机挂载单个文件到容器中

# 方法一
docker run --rm -it \
--mount type=bind,source=#HOME/.bash_history,target=/root/.bash_history \
ubuntu:17.10 bash # 方法二
docker run --rm -it \
-v $HOME/.bash_history:/root/.bash_history \
ubuntu:17.10 bash

Docker入门-数据挂载的更多相关文章

  1. docker入门-常用命令和网络

    一.常用命令 容器生命周期管理 run     运行一个容器 start/stop/restart  启动/停止/重启 kill   杀死一个容器 rm  删除一个容器 pause/unpause c ...

  2. Docker数据挂载

    Docker数据管理 在容器中管理数据主要有两种方式: 数据卷(Volumes) 挂载主机目录(Bind mounts) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很 ...

  3. docker安装mysql5.7 数据挂载

    docker安装mysql5.7,并数据卷挂载到主机 # docker 中下载 mysql docker pull mysql:5.7 #启动 docker run --name mysql3306 ...

  4. Docker与数据:三种挂载方式

    操作系统与存储 操作系统中将存储定义为 Volume(卷) ,这是对物理存储的逻辑抽象,以达到对物理存储提供有弹性的分割方式.另外,将外部存储关联到操作系统的动作定义为 Mount(挂载). Dock ...

  5. Docker 入门实践

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...

  6. Docker入门基础(一)

    Docker入门基础 Linux只存在文件目录,不存在“盘”的概念 Dockers优点:方便部署环境.资源占用少(微服务) Docker的三大概念 镜像:类似虚拟机的镜像.用俗话说就是安装文件.容器: ...

  7. Docker 入门指南——常用命令

    前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...

  8. redis哨兵集群、docker入门

    redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...

  9. 【Docker入门】

    目录 Linux容器 Docker的优势 Docker三大概念 安装使用Docker 补充知识 [Docker入门] 发布文章 "qq_41964425" @ *** 所谓Dock ...

随机推荐

  1. 附录1:arrayanalysis的本地使用(质量控制)

    访问:https://github.com/BiGCAT-UM/affyQC_Module,点击“Download ZIP”,下载得到affyQC_Module-master.zip,解压得到一个af ...

  2. [转]Opcode是啥以及如何使用好Opcache

    转载链接:Opcode是啥以及如何使用好Opcache 啥是Opcode? 我们在日常的PHP开发过程中,应该经常会听见Opcache这个词,那么啥是Opcode呢? Opcache 的前生是 Opt ...

  3. 使用CSS设置背景图片,图片比较大,完全显示在一个DIV中

    做的时候想要边框为比较好看的样式,需要UI切图并且放在div中,看起来会好看点 像这样的,我随便挑选了一个,UI帮我切图出来 需要把这个图片填到相应的div里面,但是很显然碰到一个问题,图片太大,而且 ...

  4. MyCat配置简述以及mycat全局ID

    Mycat可以直接下载解压,简单配置后可以使用,主要配置项如下: 1. log4j2.xml:配置MyCat日志,包括位置,格式,单个文件大小 2. rule.xml: 配置分片规则 3. schem ...

  5. shell脚本中的数组

    以下命令,都是以数组array=("20150417" "20150416" "20150415")为例. 注意bash中只支持一维数组,没 ...

  6. Delphi Timer组件

  7. Ubuntu下查看so文件的函数列表

    Ubuntu下查看so文件的函数列表   可使用如下命令: 1.nm -D XXX.so 2.objdump -tT  XXX.so   nm libcyusb.so | grep "usb ...

  8. 第四章 生命周期函数--36 结合Node手写JSONP服务器剖析JSONP原理

  9. 【SPOJ2371】LIS2

    题目大意:求二维最长上升子序列的长度. 题解: 可以看出,这个问题等价于三维偏序问题. 不过在进行分治的时候要注意,由于 dp 转移是有顺序的,因此只能先处理左半部分,再处理左半部分对右边的贡献,最后 ...

  10. js 计算字符串中出现次数最多的字符及其次数

    方法一: var str="sdfseresssssdssdfsa"; var arr=[]; var max=0; var maxk; for(var i=0;i<str. ...