Docker数据管理

一、数据卷

数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于linux的mount行为。

数据卷可以提供很多可用的特性:

  • 数据卷可以在容器之间共享和重用,容器间传递数据变得高效和方便。
  • 对数据卷内数据的修改会立刻生效,无论是容器内操作还是本地操作。
  • 对数据卷的更新不会影响镜像,解耦应用和数据。
  • 卷会一直存在,直到没有容器使用,可以安全的卸载它。

1.创建数据卷

D:docker_test>docker volume create -d local test
test

 其他命令:

 1)查看数据卷详细信息

D:docker_test>docker volume inspect test
[
    {
        "CreatedAt": "2021-10-31T08:21:54Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/test/_data",
        "Name": "test",
        "Options": {},
        "Scope": "local"
    }
]

 2)列出所有数据卷

D:docker_test>docker volume ls
DRIVER    VOLUME NAME
local     test

 3)清理无用数据卷

D:docker_test>docker volume prune

 4)删除数据卷

D:docker_test>docker volume rm test

2.绑定数据卷

在执行docker run命令时,可以使用-mount选项来使用数据卷

-mount支持三种类型的数据卷:

volume:普通数据卷,映射到主机volumes目录下

bind:绑定数据卷,映射到主机指定目录下

tmpfs:临时数据卷,只存在于内存中

D:docker_test>docker run -d -P name web --mount type=bind, source=/webapp, destination=/opt/webapp training/webapp python app.py

上面使用training/webapp镜像运行容器,并创建一个数据卷挂载到容器的/opt/webapp目录。

Docker挂载目录默认权限是读写(rw),用户可以ro指定为只读。

二、数据卷容器

如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载。

 1)创建一个数据卷容器,并在其中创建一个数据卷挂载到/dbdata目录:

D:docker_test>docker run -it -v /dbdata --name dbdata ubuntu:18.04

 2)创建db1和db2两个容器,并从dbdata目录挂载数据卷:

D:docker_test>docker run -it --volumes-from dbdata --name db1 ubuntu:18.04
D:docker_test>docker run -it --volumes-from dbdata --name db2 ubuntu:18.04

现在在dbdata、db1、db2三个容器中任一容器的dbdata目录下新建/编辑/删除文件,其他两个容器的dbdata目录均实时更新。

原文地址:https://www.cnblogs.com/shier-dong/p/15489890.html