Docker 数据卷(volume)

前言

本文仅介绍Docker数据卷、具名挂载、匿名挂载、容器间数据共享
完整版Docker教程请移步Docker 完整版教程笔记

Docker 数据卷

  • 容器的持久化同步操作
  • 容器间的数据共享

挂载数据卷

# -v 挂载容器文件到本地指定路径
docker run -it -v 主机路径:容器路径 镜像名 bash

[root@VM-16-4-centos docker]# docker run -it -v /root/docker:/home python bash
root@5713f008c70b:/# pwd
/
root@5713f008c70b:/# cd /home
root@5713f008c70b:/home# ls
docker_v
root@5713f008c70b:/home# cat docker_v
root@5713f008c70b:/home# echo 挂载 > docker_v
root@5713f008c70b:/home# cat docker_v
挂载
root@5713f008c70b:/home#
exit
[root@VM-16-4-centos docker]# cat docker_v
挂载
[root@VM-16-4-centos docker]#
  • 修改文件只需要在本地修改即可,容器内会自动同步

  • 删除容器后,挂载在本地的数据卷依旧没有消失,即容器的持久化

具名挂载和匿名挂载

具名挂载

[root@VM-16-4-centos ~]# docker volume --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.

# 查看volumes列表
[root@VM-16-4-centos ~]# docker volume ls
DRIVER    VOLUME NAME
local     f2ca5c3e4d50011c23484c04dbe1389b84e4b5cd4ccdc3c5fe0727a7cb506d4f
local     nextcloud-example_acme
local     nextcloud-example_certs
local     nextcloud-example_db
local     nextcloud-example_html
local     nextcloud-example_nextcloud
local     nextcloud-example_vhost.d

#具名挂载
[root@VM-16-4-centos ~]# docker run -it -v volumes_name:/home python bash
root@17a1cd2bf41f:/#
exit
[root@VM-16-4-centos ~]# docker volume ls
DRIVER    VOLUME NAME
local     f2ca5c3e4d50011c23484c04dbe1389b84e4b5cd4ccdc3c5fe0727a7cb506d4f
local     nextcloud-example_acme
local     nextcloud-example_certs
local     nextcloud-example_db
local     nextcloud-example_html
local     nextcloud-example_nextcloud
local     nextcloud-example_vhost.d
local     volumes_name

# -v 卷名:容器内路径
[root@VM-16-4-centos ~]# docker volume inspect volumes_name
[
    {
        "CreatedAt": "2022-07-02T13:14:23+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/volumes_name/_data",
        "Name": "volumes_name",
        "Options": null,
        "Scope": "local"
    }
]
# 挂载卷本地路径
"Mountpoint": "/var/lib/docker/volumes/volumes_name/_data"

匿名挂载

# 查看当前已挂载卷信息
[root@VM-16-4-centos ~]# docker volume ls
DRIVER    VOLUME NAME
local     4b141a71816e9afde2b99000408c463fa2d083185f636338fd3730fb96b76524
local     18b88b7ec6b3493bdb64e3d44b3502cf2a8dfcd3db0bb6007ff4c351a5c97210
local     7084c84ab678249b5d94aac5dd75f4ee4593190817826e3a500f028b0a6d853c
local     ababaeecc1ec0a57c05093c00b6572570bfb132603389cbaa19a49fe47bc4863
local     f2ca5c3e4d50011c23484c04dbe1389b84e4b5cd4ccdc3c5fe0727a7cb506d4f

# 匿名挂载
[root@VM-16-4-centos ~]# docker run -idt -v /home python bash
16d35a25083ead16a9458b7722df79427de5f5c19e861bfc442ca56a99aa08dd
[root@VM-16-4-centos ~]# docker volume ls
DRIVER    VOLUME NAME
local     4b141a71816e9afde2b99000408c463fa2d083185f636338fd3730fb96b76524
local     18b88b7ec6b3493bdb64e3d44b3502cf2a8dfcd3db0bb6007ff4c351a5c97210
local     085c3ac7e4c1dec6a32fe3a3305b10a72d94af1e569c1e212988ac0054695df4
local     7084c84ab678249b5d94aac5dd75f4ee4593190817826e3a500f028b0a6d853c
local     ababaeecc1ec0a57c05093c00b6572570bfb132603389cbaa19a49fe47bc4863
local     f2ca5c3e4d50011c23484c04dbe1389b84e4b5cd4ccdc3c5fe0727a7cb506d4f

# local     7084c84ab678249b5d94aac5dd75f4ee4593190817826e3a500f028b0a6d853c
# 查看新增卷信息
[root@VM-16-4-centos ~]# docker volume inspect 085c3ac7e4c1dec6a32fe3a3305b10a72d94af1e569c1e212988ac0054695df4
[
    {
        "CreatedAt": "2022-07-17T00:11:31+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/085c3ac7e4c1dec6a32fe3a3305b10a72d94af1e569c1e212988ac0054695df4/_data",
        "Name": "085c3ac7e4c1dec6a32fe3a3305b10a72d94af1e569c1e212988ac0054695df4",
        "Options": null,
        "Scope": "local"
    }
]

# 挂载卷本地路径
"Mountpoint": "/var/lib/docker/volumes/085c3ac7e4c1dec6a32fe3a3305b10a72d94af1e569c1e212988ac0054695df4/_data"

本机挂载数据卷的路径规则

  • /var/lib/docker/volumes/卷名/_data
# 如何判断具名挂载和匿名挂载
-v 容器内路径	# 匿名挂载
-v 卷名:容器内路径	#具名挂载
-v /宿主机路径:容器内路径 # 指定路径挂载

拓展

# 通过-v 容器内路径:ro rw 改变读写权限
ro	readonly	# 只读
rw	readwrite	# 读写

# 一旦设置了容器读写权限,容器对我们挂载出的内容就有了限制!
# ro 该路径只能通过宿主机操作,容器内无法操作!
[root@VM-16-4-centos ~]# docker run -it -v volumes_name:/home python:ro bash
[root@VM-16-4-centos ~]# docker run -it -v volumes_name:/home python:rw bash

容器间的数据共享

#--volumes-from 共享的容器名
 docker run -d -v /home/docker --name python01 python_volume
 docker run -d -v /home/docker --name python02 --volumes-from python01 python_volume

# 实现两个容器的数据同步!
# 若多个容器进行数据同步,删除其中一个,数据不会丢失!拷贝概念!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值