docker 数据管理
docker存储路径
默认存储路径(/var/lib/docker/)
更改docker存储路径
/usr/lib/systemd/system/docker.service
# ExecStart=后面加上参数 --graph /to/your/path
挂载类型
### Volumes(管理卷)
- 由docker管理,默认存储路径(/var/lib/docker/volumes/),卷是Docker中保存数据的最佳方式。
- 在多个运行的容器之间共享数据,当容器停止或被删除时,该卷仍然存在,多个容器可以同时挂载相同的卷,无论是读写还是只读。
### Bind mounts(绑定卷)
- 可以存储在主机系统上的任何位置。
- 将配置文件从主机共享到容器。
### tmpfs
仅存储在主机系统的内存中,并且永远不会写入主机系统的文件系统中。
Volume
卷是用于持久化由Docker容器生成和使用的数据的首选机制。绑定挂载依赖于主机的目录结构,卷完全由Docker管理。
### 卷与绑定挂载相比有几个优势:
- 卷比绑定挂载更容易备份或迁移。
- 可以使用Docker CLI命令或Docker API来管理卷。
- 卷可以在Linux和Windows容器上工作。
- 卷可以更安全地在多个容器之间共享。
- 卷驱动程序允许您在远程主机或云提供商上存储卷、加密卷的内容或添加其他功能。
- 新卷的内容可以由容器预先填充。
### 创建卷
docker volume create -d local volume_name
-d local # 默认为linux的内建local驱动
--opt, -o # 默认map[],自定义卷选项
### 自定义卷(内建local driver,volume-opt, mount选项)
内建 local Windows上的驱动程序不支持任何选项
内建 local Linux上的可选接受驱动程序类似于linux的mount命令,支持nfs需要安装nfs-utils
通过多次传递--opt标志, 可以提供多个选项。一些mount选项(例如o选项)可以采用逗号分隔的选项列表
docker volume create \
--driver local \
--opt type=nfs \
--opt o=addr=nfs_server_ip,rw \
--opt device=:/path/to/nfs_server_share \ # 共享路径前不加 ":"冒号会报invalid argument
volume_name
### 挂载 Volume (从Docker 17.06版本开始,官方建议统一使用 --mount 给容器挂载卷存储)
ps: 宿主机挂载目录会覆盖容器挂载点目录
-v或--volume:由三个字段组成,以冒号(:)分隔。
--mount:包含多个键值对,以逗号分隔,每个键值对都由一个<key>=<value>元组组成
type # bind, volume, or tmpfs
source or src # 如果source对应的volume不存在,则会自动创建
destination, dst, or target
readonly
### 卷容器
它的目的是专门提供数据卷给其他容器挂载。
### 备份,恢复或迁移数据量
--volumes-from volume_container_name
绑定卷用户权限
宿主机目录用户权限会覆盖容器内挂载点用户权限
### 容器内更改uuid
usermod -u uuid user_name
### 宿主机更改other权限
chmod o+rwx path
### 更改容器的启动用户为root(部分应用无法用root启动)
docker run -u root