Docker中的数据与网络管理(数据、数据卷)
当我们对容器进行操作时,产生一系列数据会存储在容器中,那Docker内部又是怎么管理这些数据呢??
====================================华丽分割符==================================
一、Docker数据存储机制
1、Docker镜像是通过读取Dockerfile文件的指令构建的,Dockerfile中的每条指令都会创建一个镜像层,并且每层都是只读的,这一系列的镜像层就构成了Docker镜像。
2、Docker容器和镜像之间的主要区别是顶部的容器层,而所有对容器中数据的添加、修改等操作都会被存储在容器层中。当容器被删除时,容器层也被删除,其中存储的数据会被一同删除,而下面的镜像层却保持不变。
3、由于所有的容器都是通过镜像构建的,所以每个容器都有各自的容器层,对于容器数据的更改就会保存在各自的容器层中,即:由同一个镜像构建的多个容器,它们拥有相同的底部镜像层,而拥有不同的容器层,多个容器可以访问相同的镜像层,并且拥有自己的独立的数据状态。
二、Docker的数据存储方式
默认Docker中的数据都是存储在容器层中,缺陷还是比较多滴!
- 当容器不再运行时,容器中的数据无法持久化保存
- 容器层与正在运行的主机紧密耦合,不能轻易的移动数据
- 容器层需要一个存储驱动程序来管理文件系统,存储驱动提供了一个使用Linux内核的联合文件系统,这种额外的抽象化降低了性能
于是嘞,就要使用一种叫Docker volume数据外部挂载机制,Doker提供了三种不同的方式将数据从容器映射到Docker宿主机,
分别是:
volumes(数据卷):存储在主机文件系统中(在Linux系统下是存在于/var/lib/Docker/volumes目录),由Docker管理,非Docker进程无法修改文件系统的这个部分。
bind mounts(绑定挂载):存储在主机系统的任意位置,甚至可能是重要的系统文件或目录,在Docker主机或容器上的非Docker进程可以对它们进行任意修改。
tmpfs mounts(tmpfs挂载):只存储在主机系统的内存中,并没有写入到主机的文件系统中
三、Volumes数据卷管理
优势:
- 数据卷比绑定挂载更容易备份和迁移
- 可以使用Docker CLI指令或Docker API来管理数据卷
- 在Linux和windows容器上都可以使用数据卷
- 在多个容器之间可以更安全的共享数据卷
数据卷驱动器允许在远程主机或云提供商上存储数据卷,并且加密数据卷的内容或添加其他功能
一个新数据卷的内容可以由一个容器预填充
(一)创建并管理数据卷
注:为避免其他的容器和数据卷的干扰,若存在容器和数据卷,最好删除
1、在Docker主机终端上,创建一个名为my-vol的数据卷并查看是否创建成功
# docker volume create my-vol //创建一个名为my-vol的数据卷
#docker volume ls //查看数据卷
2、核查数据卷
#docker volume inspect my-vol //查看指定数据卷详情
3、删除数据卷
# docker volume rm 数据卷名称 //删除指定名称的数据卷
(二)启动容器并加载数据卷
1、查看本机容器和数据卷
#docker ps -a //查看本地docker机器上存在的容器
#docker volume ls //查看本地docker机器上存在的数据卷
2、确认查看本机Docker文件系统中的容器和数据卷
先切换到root用户,再进入“/var/lib/docker”目录,查看信息
3、启动容器并挂载 数据卷(通过--mount参数)
(通过-v参数)
说明:
--mount参数:由多个key=value形式的键值对组成,键值对之间使用英文逗号分隔。--mount参数语法比-v更加详细,键的顺序可以随意,标记的值也更容易理解。3
-v(--volume缩写)参数:由三个字段组成,分别由冒号(:)分隔,字段必须以正确的顺序排列,而且每个字段的含义特别明确。
4、再次查看本机容器和数据卷列表
5、检查容器详情
6、再次确认本机Docker文件系统中的容器和数据卷
先切换到root用户,再进入“/var/lib/docker”目录,然后分别进入containers容器文件目录和volumes数据卷文件查看内容
- Docker_docker数据和网络管理,dockerfile的用法介绍-思维导图
- Docker中的网络和数据管理
- docker学习系列二:数据管理和网络基础配置
- Docker中网络与数据管理
- Docker中的网络管理和数据管理
- Docker数据及网络管理
- Docker中的网络与数据管理
- Docker 数据管理
- 标准功能模块组件 -- “文档管理组件,网络文档管理,网络存储”,B\S版本组件可独立运行,也可集成到其他项目里,数据结构清晰思路严谨
- 使用weave管理docker网络
- Docker网络管理的未来命令_Linux Docker网络管理的未来 命令用法详解:
- 6. Docker - 数据管理
- Docker 基础 : 数据管理
- 多主机网络下 Docker Swarm 模式的容器管理
- Docker的数据管理
- docker中管理数据
- 标准功能模块组件 -- “文档管理组件,网络文档管理,网络存储”,B/S版本组件可独立运行,也可集成到其他项目里,数据结构清晰思路严谨
- Docker 数据管理
- 7. Docker - 网络管理
- Docker 网络及数据卷设置 [三]