S++

千线一眼

导航

Docker入门(7):容器数据卷

为什么需要容器数据卷

试想一下如果将数据都存在容器里,那么将容器删除里面的数据都会丢失
由此我们需要实现数据持久化
容器数据卷的作用就是将容器的目录挂载到Linux本地,这样就实现了数据的共享

使用数据卷

方法一:使用命令-v直接挂载

docker run -it -v 主机目录:容器内目录 ...

方法二:使用Dockerfile挂载

深入了解Dockerfile请看这里
Dockerfile就是来构建容器镜像文件的命令脚本
Dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,Docker能够读取Dockerfile的指定进行自动构建容器,基于Dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。
Dockerfile举例

  1. 编写一个名为dockerfile_1的文件
FROM 镜像[:版本]    # 根据什么镜像创建
volume ["volume_1","volume_2"]  # 挂载的目录

CMD /bin/bash  # 什么命令方式进入
  1. 使用dockerfile_1创建镜像
docker bulid -f dockerfile_1的路径 -t 镜像名称:版本
  1. 运行自己创建的镜像
docker run ......

数据卷管理

volume命令

docker volume COMMAND
  create      # 创建卷
  inspect     # 显示一个或多个卷的详细信息
  ls          # 列表出卷
  prune       # 移除所有未使用的本地卷
  rm          # 移除一个或多个卷

拓展

docker run -it -v 主机目录:容器内目录 ...  # 指定路径挂载
docker run -it -v 卷的名称:容器内目录 ...  # 具名挂载
docker run -it -v 容器内目录 ...          # 匿名挂载

# 在容器内目录后面可以添加读写权限
# :ro 只读readonly,一旦设置仅可从宿主机更改,容器内部不可更改
# :rw 可读可写readwrite

通过数据卷共享数据

我们今后极有可能需要两个容器之间共享数据
共享挂载目录

docker run -it --name 容器名 --volumes-from 被共享的容器名 镜像名:版本

若被共享的容器被删除,新创建的容器数据也不会丢失。

posted on 2022-02-19 11:56  S++  阅读(46)  评论(0)    收藏  举报