|
在Docker中,管理数据主要有两种方式: - 数据卷(Volume)
- 挂载主机目录(Bind mounts)
数据卷数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性: - 数据卷可以在多个容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新不会影响镜像
- 数据卷默认一直存在,即使容器被删除
下面介绍一下数据卷功能常用的一些命令: root@ubuntu:~# docker volume lsDRIVER VOLUME NAMElocal 270027094c35ee017b5644421b3c97df20d646539dafdf9a946e39cd1743f84flocal 309df26eb400a1d2e1c7ce64e05d0c8e8148b0bd2270299597c591c328c8f6eeroot@ubuntu:~# docker volume create my_volmy_volroot@ubuntu:~# docker volume lsDRIVER VOLUME NAMElocal 270027094c35ee017b5644421b3c97df20d646539dafdf9a946e39cd1743f84flocal 309df26eb400a1d2e1c7ce64e05d0c8e8148b0bd2270299597c591c328c8f6eelocal my_volroot@ubuntu:~# docker inspect my_vol[ { "CreatedAt": "2018-08-13T11:15:35+08:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/my_vol/_data", "Name": "my_vol", "Options": {}, "Scope": "local" }]root@ubuntu:~# docker volume rm my_volroot@ubuntu:~# docker volume prune启动一个挂载数据卷的容器在用docker run命令的时候,使用--mount标记将数据卷挂载到容器里。在一次docker run中,可以挂载多个数据卷。下面创建一个名为web的容器,并加载一个数据卷到容器: root@ubuntu:~# docker run --name web --mount source=my_vol,target=/app -d ubuntu:16.04注意,这里数据卷my_vol如果不存在,会自动创建! 然后,我们可以使用如下命令查看容器数据卷的具体信息: root@ubuntu:~# docker inspect --format '{{json .Mounts}}' web | python3 -m json.tool[ { "Type": "volume", "Name": "my_vol", "Source": "/var/lib/docker/volumes/my_vol/_data", "Destination": "/app", "Driver": "local", "Mode": "z", "RW": true, "Propagation": "" }]挂载主机目录到容器中使用--mount标记可以指定挂载一个本机的目录到容器中: root@ubuntu:~# docker run --name web --mount type=bind,source=/root/info,target=/app -d ubuntu:16.04在以前,使用-v参数时如果本地目录不存在Docker会自动为你创建一个文件夹,现在使用--mount参数时,如果本地目录不存在,Docker会报错。 Docker挂载主机目录的权限是读写,我们也可以通过增加readonly来指定为只读: root@ubuntu:~# docker run --name web --mount type=bind,source=/root/infi,target=/app,readonly -d ubuntu:16.04
【转载】 https://blog.csdn.net/y472360651/article/details/81699904
|