Skip to content
KARINKARIN
博客主页
项目总览
知识要点
捣鼓折腾
Git笔记
Excel修炼秘籍
github icon
  • 博客主页
    • 项目总览
        • 虚拟化的发展
          • 初识 Docker 与容器
            • 核心概念与安装配置
              • 使用 Docker 镜像
                • 操作 Docker 容器
                  • 访问 Docker 仓库
                    • Docker 数据管理
                      • 数据卷
                        • 1、创建数据卷
                          • 2、绑定数据卷
                        • 端口映射与容器互联
                          • 使用 Dockerfile 创建镜像

                          Docker 数据管理

                          author iconkarincalendar icon2021年8月23日category icon
                          • 笔记
                          tag icon
                          • docker
                          timer icon大约 2 分钟

                          此页内容
                          • 数据卷
                            • 1、创建数据卷
                            • 2、绑定数据卷

                          在生产环境中使用 Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作。

                          容器中的管理数据主要有两种方式:

                          • 数据卷(Data Volumes):容器内数据直接映射到本地主机环境;

                          • 数据卷容器(Data Volume Containers):使用特定容器维护数据卷。

                          将首先介绍如何在容器内创建数据卷,并且把本地的目录或文件挂载到容器内的数据卷中。接下来,介绍如何使用数据卷容器在容器和主机、容器和容器之间共享数据,并实现数据的备份和恢复。

                          # 数据卷

                          数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于 Linux 中的 mount 行为。

                          数据卷可以提供很多有用的特性:

                          • 数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便;
                          • 对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作;
                          • 对数据卷的更新不会影响镜像,解耦开应用和数据 ;
                          • 卷会一直存在,直到没有容器使用,可以安全地卸载它。

                          # 1、创建数据卷

                          Docker 提供了 volume 子命令来管理数据卷,如下命令可以快速在本地创建一个数据卷:

                          $ docker volume create -d local test
                          test
                          
                          1
                          2

                          此时,docker volume ls 命令可以查看已有的数据卷,docker inspect test 可以查看数据卷 test 的具体信息:

                          $ docker volume ls
                          DRIVER    VOLUME NAME
                          local     test
                          $ docker inspect test 
                          [
                              {
                                  "CreatedAt": "2021-09-22T15:06:05+08:00",
                                  "Driver": "local",
                                  "Labels": {},
                                  "Mountpoint": "/var/lib/docker/volumes/test/_data",
                                  "Name": "test",
                                  "Options": {},
                                  "Scope": "local"
                              }
                          ]
                          
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15

                          除了 create 子命令外,docker volume 还支持 inspect(查看详细信息)、ls(列出已有数据卷)、prune(清理无用数据卷)、rm(删除数据卷)等,大家可以自行实践。

                          # 2、绑定数据卷

                          除了使用 volume 子命令来管理数据卷外,还可以在创建容器时将主机本地的任意路径挂载到容器内作为数据卷,这种形式创建的数据卷称为绑定数据卷。

                          在用 docker [container] run 命令的时候,可以使用 -mount 选项来使用数据卷。

                          -mount 选项支持三种类型的数据卷,包括:

                          • volume:普通数据卷,映射到主机 /var/lib/docker/volumes 路径下;
                          • bind:绑定数据卷,映射到主机指定路径下;
                          • tmpfs :临时数据卷,只存在于内存中。

                          下面使用 training/webapp 镜像创建一个 Web 容器,并创建一个数据卷挂载到容器的 /opt/webapp 目录:

                          edit icon编辑此页open in new window
                          上一页
                          访问 Docker 仓库
                          下一页
                          端口映射与容器互联
                          MIT Licensed
                          Copyright © 2022 karin