容器化技术——Docker专题七 | 数据挂载

本文章是在网易云课堂的课程学习中编写,部分图片从网易云课堂ppt引用

【Docker 数据管理】

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

  • 数据卷(Volumes):在docker管理范围内,在docker内部
  • 挂载主机目录(Bind mounts)
  • 挂载文件
image.png

【一、数据卷】

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

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

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

2、Docker中提供了两种挂载方式,-v和-mount,官方推荐使用-mount

创建一个数据卷test
docker volume create test

查看所有的数据卷
docker volume ls

查看指定数据卷的信息
docker volume inspect test

image.png

3、启动一个挂载数据卷的容器
这里我们使用session-web:latest镜像

image.png

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

docker run --name web -d -p 8888:8080 --mount source=test,target=/webapp session-web:latest

image.png

删除名为test的数据卷

docker volume rm test

1)数据卷 是被设计用来持久化数据的,它的生命周期独立于容器
2)Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷
3)如果需要在删除容器的同时移除数据卷,可以在删除容器的时候使用 docker rm -v 这个命令

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

docker volume prune

【二、挂载主机目录】

加载主机的 /home/docker 目录到容器的 /opt/webapp目录

docker run --name web1 -d -p 8890:8080 --mount type=bind,source=/home/docker,target=/opt/webapp session-web:latest

image.png

1)这个功能在进行测试的时候十分方便,比如用户可以放置一些程序到本地目录中,来查看容器是否正常工作
2)本地目录的路径必须是绝对路径,使用 --mount 参数时如果本地目录不存在,Docker 会报错
3)Docker 挂载主机目录的默认权限是 读写,也可以通过增加 readonly 指定为 只读

【三、挂载文件】

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

docker run --rm -it --mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history session-web:latest bash

这样就可以记录在容器输入过的命令了

你可能感兴趣的:(容器化技术——Docker专题七 | 数据挂载)