Docker-数据管理

在Docker中,管理数据主要有两种方式:

  • 数据卷(Volume)
  • 挂载主机目录(Bind mounts)

数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:

  • 数据卷可以在多个容器之间共享和重用
  • 数据卷的修改会立马生效
  • 数据卷的更新不会影响镜像
  • 数据卷默认一直存在,即使容器被删除

下面介绍一下数据卷功能常用的一些命令:

  • 列出所有数据卷
root@ubuntu:~# docker volume ls
DRIVER              VOLUME NAME
local               270027094c35ee017b5644421b3c97df20d646539dafdf9a946e39cd1743f84f
local               309df26eb400a1d2e1c7ce64e05d0c8e8148b0bd2270299597c591c328c8f6ee
  • 创建一个数据卷
root@ubuntu:~# docker volume create my_vol
my_vol
root@ubuntu:~# docker volume ls
DRIVER              VOLUME NAME
local               270027094c35ee017b5644421b3c97df20d646539dafdf9a946e39cd1743f84f
local               309df26eb400a1d2e1c7ce64e05d0c8e8148b0bd2270299597c591c328c8f6ee
local               my_vol
  • 查看数据卷的信息
root@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_vol
  • 删除无主数据卷
root@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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值