|
数据管理在真实环境中docker需要对数据进行持久化,或者多个容器之间进行数据共享,涉及到容器的数据管理操作。
数据卷:容器内数据映射到本地主机环境数据卷容器:使用特定容器维护数据卷数据卷数据卷(Data Volumes)是一个可供容器使用的特殊目录,通过主机操作系统目录直接映射进容器,类似mount
特性:
可以在容器间共享,重用对数据卷内数据的修改会立即生效,不论是在操作系统目录下还是容器内对数据卷的更新不会影响容器卷会一直存在,知道没有容器使用,可以卸载它1、创建数据卷
docker提供了volume命令来管理数据卷,除了create(创建),还支持inspect(查看详细信息),ls(列出已有数据卷),prune(清理无用数据卷),rm(删除数据卷)等
[root@docker01 ~]# docker volume create -d local testtest[root@docker01 ~]# ll
/var/lib/docker/volumes/total 24drwxr-xr-x. 3 root root19 Mar 9 23:21
1d300cc7b91123b4180bf8edb1f3ce130a8f317dba3332f21c55be23f27d0f30-rw-------. 1
root root 32768 Mar 10 15:10 metadata.dbdrwxr-xr-x. 3 root root19 Mar 10 15:10 test[root@docker01 ~]# docker
volume lsDRIVERVOLUME
NAMElocal1d300cc7b91123b4180bf8edb1f3ce130a8f317dba3332f21c55be23f27d0f30localtest2、绑定数据卷
可以在创建容器时将本地主机的任意路径挂载到容器内作为数据卷,这种形式创建的数据卷成为绑定数据卷,docker [container] run --mount选择使用数据卷。
-mount支持三种类型的数据卷:
volume:普通数据卷,映射到主机/var/lib/docker/volumes路径下
bind:绑定数据卷,映射到主机指定路径下
tmpfs:临时数据卷,只存在于内存中
使用training/weapp镜像创建一个web容器,并创建一个数据卷挂载到容器的/opt/webapp目录下。
[root@docker01 ~]# docker run -d -P --name web --mount
type=bind,source=/webapp,destination=/opt/webapp:ro training/webapp python
app.py#加个ro或rw表示目录权限[root@docker01 ~]# docker run -d -P --name web --mount
type=bind,source=/webapp,destination=/opt/webapp training/webapp python
app.pyUnable to find image 'training/webapp:latest'
locallylatest: Pulling from training/webappImage
docker.io/training/webapp:latest uses outdated schema1 manifest format. Please
upgrade to a schema2 image for better future compatibility. More information at
https://docs.docker.com/registry/spec/deprecated-schema-v1/e190868d63f8: Pull
complete 909cd34c6fd7: Pull complete 0b9bfabab7c1: Pull complete a3ed95caeb02:
Pull complete 10bbbc0fc0ff: Pull complete fca59b508e9f: Pull complete
e7ae2541b15b: Pull complete 9dd97ef58ce9: Pull complete a4c1b0cb7af7: Pull
complete Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11dStatus:
Downloaded newer image for
training/webapp:latest89b39b0e540a3fc4730f5d72c2606dc162d4e6fa3f74eaf3c9b441d4e664576b数据卷容器用户需要在多个容器之间共享一些持续更新的数据,可以使用数据卷容器,数据卷容器也是一个容器,但它是专门提供数据卷给其他容器挂载
创建一个数据容器卷dbdata,并在其中创建一个数据卷挂载到/dbdate
[root@docker01 ~]# docker run -it -v /dbdate --name dbdate ubuntu:18.04
root@f046a96ec64d:/# lsbin boot dbdate dev etc home lib lib64 media mnt opt
proc root run 其他容器使用--volumes-from来挂载dbdate容器中的数据卷
[root@docker01 webapp]# docker run -it --volumes-from dbdate --name db1
ubunturoot@fafd91f30ad1:/# lsbin boot dbdate dev etc home lib lib64 media mnt
opt proc root run 测试,互相可以看到创建的文件
root@f046a96ec64d:~# cd /dbdate/root@f046a96ec64d:/dbdate# touch
aaroot@f046a96ec64d:/dbdate# lsaa root@fafd91f30ad1:/# cd
dbdate/root@fafd91f30ad1:/dbdate# lsaa如果删除了dbdata和db1数据卷不会被自动删除,如果要删除使用docker rm -v来删除 |
|