Docker学习第三天(Docker数据卷管理)

1.Docker数据卷管理

  在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中。目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中:

1.volumes:Docker管理宿主机文件系统的一部分(默认文件位置:/var/lib/docker/volumes) 常用

由上图可知我们到了 /var/lib/docker/volumes 目录下有的文件名很长这时匿名 二有的则是我们创建时制定的

2.bind mounts:可以存储在宿主机系统的任意位置

但是,bind mount在不同的宿主机系统时不可移植的,比如Windows和Linux的目录结构是不一样的,bind mount所指向的host目录也不能一样。这也是为什么bind mount不能出现在Dockerfile中的原因,因为这样Dockerfile就不可移植了。
3.tmpfs:挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统 不常用

三种方式示意图:

2.Volume数据卷的使用

管理卷

docker volume create edc-nignx-vol //创建一个自定义容器卷
docker volume ls //查看所有容器卷
docker volume inspect edc-nginx-vol //查看指定容器卷详情信息

用卷创建一个容器

docker run -d -it --name=edc-nginx -p 8800:80 -v edc-nginx-vol:/usr/share/nginx/html nginx
//-v代表挂载数据卷,这里使用自定数据卷edc-nginx-vol,并且将数据卷挂载到 /usr/share/nginx/html (这个目录是yum安装nginx的默认网页目录)。
//如果没有通过-v指定,那么Docker会默认帮我们创建匿名数据卷进行映射和挂载。

清理卷:

docker container stop edc-nginx //暂停容器
docker container rm edc-nginx //移出容器
docker volume rm edc-nignx-vol//删除自定义数据卷

3.Bind Mounts 的使用

Bind Mounts 绑定挂载

docker run -d -it --name=nginx-test -v /app/wwwroot:/usr/share/nginx/html nginx
//这里指定了将宿主机上的 /app/wwwroot 目录(如果没有会自动创建)挂载到 /usr/share/nginx/html (这个目录是yum安装nginx的默认网页目录)。

验证绑定

docker inspect nginx-test

清理

docker container stop nginx-test
docker container rm nginx-test

参考学习:https://www.cnblogs.com/edisonchou/p/docker_volumes_introduction.html (推荐)

原文地址:https://www.cnblogs.com/xhds/p/12319745.html

时间: 2024-10-10 03:16:19

Docker学习第三天(Docker数据卷管理)的相关文章

Docker学习历程(三):Docker镜像详解

一.镜像的组成解析: 分层镜像:底层bootfs,上层rootfs:启动容器时,两层都以只读方式挂载 bootfs类型可以是btrfs.aufs.lxc,除此之外还需要一个内核,该内核仅用于启动容器中的用户控件 rootfs具体表现为一个根文件系统,包含基本的文件和目录 构建镜像的基本流程: 预备一个bootfs 安装最小系统 按需部署应用 镜像的读写机制: 镜像俱为只读属性 启动容器后在镜像基础上新增当前容器的专用层,该层可进行写入 容器被删除后,专用读写层会随之删除,所以容器默认无法实现数据

Docker学习笔记三:Docker部署Java web系统

Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app &&cd app 2.将apache-tomcat-7.0.29.tar.gz及jdk-7u25-linux-x64.tar.gz拷贝 到app目录下 3.解压两个tar.gz文件 tar -zxvf apache-tomcat-7.0.29.tar.gz tar -zxvf jdk-7u25-linux

Docker学习(二)docker镜像操作

上一篇:docker学习(一)在centos7上安装docker 列出所有docker镜像 docker images 拉取镜像 docker pull 镜像名 我这里一Tomact为例 首先在Docker Hub上查找tomcat镜像 搜索tomcat选择收藏和拉取最多的那个,一般就是第一个,然后点击进去通过命令进行拉取 拉取镜像,默认tag: latest最新版本 等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为tomcat的镜像. [[email protected]

[docker]动态挂卷与数据卷管理

声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! 动态挂卷 目前docker不支持动态挂卷.有同事就提出,以下方法是否可行:1. 将块设备通过ln链接到容器与host的映射目录.2. 将块设备挂载到容器与host的映射目录. 以下是实验过程:由于非特权无法看到/dev下的设备,因此ln链接实际是无效的. 同理,对于其他块设备,也是这样的.当然,我们可以配置privileged

Docker之七:Docker数据卷管理

容器数据持久化 1.数据卷:将本地磁盘mount进入容器-v /dest-v src:dst [ro]|[rw] 2.数据卷容器:将外部容器分享给容器--volumes-from数据卷容器专门用来挂载数据卷的容器,以供其他容器引用和使用 3.数据卷管理命令docker volume 一.数据卷:1.给容器内部映射一个外部数据卷 -v src:dest[[email protected] nginx]# docker run -d --name web1 -v /opt/nginx:/usr/sh

docker 学习(九) docker部署静态网站

原文:docker 学习(九) docker部署静态网站 一:  dockerfile, 把Dockerfile和myfolder放在一个目录下: FROM httpd:2.4 COPY ./myfolder/ /usr/local/apache2/htdocs/ WORKDIR /usr/local/apache2/ RUN chown -R daemon:daemon htdocs && chmod -R 755 htdocs 二: 生成镜像: docker build -t   im

Docker学习(十一)Docker系列结束-新的开始K8S

Docker学习(十一)Docker系列结束-新的开始K8S 标签(空格分隔): docke k8s Docker系列结束 上一篇讲到使用docker官方提供的容器编排工具docker-compose,但是docker-compose强调的是单机机进行容器编排,使用起来比较受限,对于一些大公司,应用不是部署在一台机器上的,在这种情况下,Docker-compose就无能为力了,在这样的情况下,需要使用集群容器编排工具,比如,google的Kubernetes(k8s),官方提供的Docker S

Docker 备份、恢复、迁移数据卷

可以利用数据卷对其中的数据进行进行备份.恢复和迁移. 备份 首先使用 --volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从本地主机挂载当前到容器的 /backup 目录.命令如下: $ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata 容器启动后,使用了 tar 命令来将 dbdata 卷备份为本地的 /backup/ba

4.docker数据卷管理

生产过程中使用docker往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,因此就需要数据卷来做数据持久化 *数据卷:容器内数据直接映射到本地主机环境 数据卷的特性: 1)可以在容器之间共享和重用,容器间传递数据变得高效方便 2)对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作 3)对数据卷的更新不会影响镜像,解耦了应用和数据 4)卷会一直存在,直到没有容器使用,可以安全地卸载它 创建数据卷 docker run -it --name web -v ~/webapp:/w