温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

docker容器的数据管理操作

发布时间:2020-05-22 14:16:23 来源:亿速云 阅读:258 作者:鸽子 栏目:系统运维

数据管理

在真实环境中docker需要对数据进行持久化,或者多个容器之间进行数据共享,涉及到容器的数据管理操作。

  • 数据卷:容器内数据映射到本地主机环境
  • 数据卷容器:使用特定容器维护数据卷

    数据卷

    数据卷(Data Volumes)是一个可供容器使用的特殊目录,通过主机操作系统目录直接映射进容器,类似mount
    特性:

  • 可以在容器间共享,重用
  • 对数据卷内数据的修改会立即生效,不论是在操作系统目录下还是容器内
  • 对数据卷的更新不会影响容器
  • 卷会一直存在,知道没有容器使用,可以卸载它

1、创建数据卷
docker提供了volume命令来管理数据卷,除了create(创建),还支持inspect(查看详细信息),ls(列出已有数据卷),prune(清理无用数据卷),rm(删除数据卷)等

[root@docker01 ~]# docker volume create -d local test
test
[root@docker01 ~]# ll /var/lib/docker/volumes/
total 24
drwxr-xr-x. 3 root root    19 Mar  9 23:21 1d300cc7b91123b4180bf8edb1f3ce130a8f317dba3332f21c55be23f27d0f30
-rw-------. 1 root root 32768 Mar 10 15:10 metadata.db
drwxr-xr-x. 3 root root    19 Mar 10 15:10 test
[root@docker01 ~]# docker volume ls
DRIVER              VOLUME NAME
local               1d300cc7b91123b4180bf8edb1f3ce130a8f317dba3332f21c55be23f27d0f30
local               test

2、绑定数据卷
可以在创建容器时将本地主机的任意路径挂载到容器内作为数据卷,这种形式创建的数据卷成为绑定数据卷,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.py
Unable to find image 'training/webapp:latest' locally
latest: Pulling from training/webapp
Image 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:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
Status: Downloaded newer image for training/webapp:latest
89b39b0e540a3fc4730f5d72c2606dc162d4e6fa3f74eaf3c9b441d4e664576b

数据卷容器

用户需要在多个容器之间共享一些持续更新的数据,可以使用数据卷容器,数据卷容器也是一个容器,但它是专门提供数据卷给其他容器挂载
创建一个数据容器卷dbdata,并在其中创建一个数据卷挂载到/dbdate

[root@docker01 ~]# docker run -it -v /dbdate --name dbdate ubuntu:18.04 
root@f046a96ec64d:/# ls
bin  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 ubuntu
root@fafd91f30ad1:/# ls
bin  boot  dbdate  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run 

测试,互相可以看到创建的文件

root@f046a96ec64d:~# cd /dbdate/
root@f046a96ec64d:/dbdate# touch aa
root@f046a96ec64d:/dbdate# ls
aa 
root@fafd91f30ad1:/# cd dbdate/
root@fafd91f30ad1:/dbdate# ls
aa

如果删除了dbdata和db1数据卷不会被自动删除,如果要删除使用docker rm -v来删除

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI