Docker持久化存储
程序员文章站
2022-05-11 23:38:16
...
docker持久化数据的方案
-
基于本地文件系统的Volume。 可以在执行
docker create
或docker run
时,通过-v
参数将主机的目录作为容器的数据卷。这部分功能便是基于本地文件系统的volume管理。 - 基于plugin的Volume,支持第三方的存储方案,比如:NAS,aws。
Volume的类型
- 受管理的Data Volume,由docker后台自动创建。不管加不加
-v
选项,docker都会创建一个data volume,位置是固定的,名字通过随机字符串命名的, - 绑定挂载的Volume -- Bind Mounting,具体挂载位置可以由用户指定。
Data Volume
命令:docker run -d --name mysql1 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
通过
-v
参数指定,mysql-data:/var/lib/mysql
表示docker会创建一个名为mysql-data
的volume,然后挂载至容器内部的/var/lib/mysql
目录。
列出所有volume:
[[email protected] ~]# docker volume ls
DRIVER VOLUME NAME
local mysql-data
查看名为mysql-data
的Volume的详细信息
[[email protected] ~]# docker volume inspect mysql-data
[
{
"CreatedAt": "2018-05-09T00:09:36+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/mysql-data/_data",
"Name": "mysql-data",
"Options": null,
"Scope": "local"
}
]
基中
"Mountpoint": "/var/lib/docker/volumes/mysql-data/_data"
表示mysql-data
对应的本地存储路径。
Volume管理命令:
[[email protected] ~]# docker volume --help
Usage: docker volume COMMAND
Manage volumes
Options:
Commands:
create 创建一个存储卷
inspect 显示一个或多个卷的详细信息
ls 列出所有卷
prune 删除所有未使用的本地卷
rm 删除一个或多个卷
Run 'docker volume COMMAND --help' for more information on a command.
Bind Mounting
命令:docker run -d --name nginx1 -v $(pwd):/usr/share/nginx/html -p 8880:80 cgy/nginx:v2 nginx -g "daemon off;"
$(pwd)
表示当前目录,通过-v
选项将当前目录挂载至容器内的/usr/share/nginx/html
目录。
docker-compose中使用
version: "3.2"
services:
web:
image: nginx:alpine
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
db:
image: postgres:latest
volumes:
- "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
- "dbdata:/var/lib/postgresql/data"
volumes:
mydata:
dbdata:
上一篇: 此处的&符号该怎么理解?
下一篇: asp.net使用AJAX实现无刷新分页