Docker持久化存储

docker持久化数据的方案

  • 基于本地文件系统的Volume。 可以在执行docker createdocker 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:

[root@openstack-load1 ~]# docker volume ls
DRIVER              VOLUME NAME
local               mysql-data

查看名为mysql-data的Volume的详细信息

[root@openstack-load1 ~]# 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管理命令:

[root@openstack-load1 ~]# 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:

你可能感兴趣的:(Docker持久化存储)