1.9-docker数据管理

Docker 数据管理

容器的空间,只是使用宿主机硬盘的一部分,一般很小。在容器中产生的数据,除非导出成镜像,否则停止或者删除容器,原来产生的数据也随之丢失。可以把宿主机的一个目录,挂载到容器中,产生的数据都写入这个目录,这样避免了数据的丢失。

1. 挂载本地的目录到容器里

docker run -tid -v /data/:/data wyp bash //-v 用来指定挂载目录,:前面的/data/为本地目录,:后面的/data/为容器里的目录,容器如果不存在/data目录,会自动创建。

然后在容器中df -h来验证,是否挂载成功。

2. 挂载数据卷

其实我们挂载目录的时候,可以指定容器name,如果不指定就随机定义了。比如上面我们没有指定,它就生成了一个名字为loving_kowalevski,这个名字可以使用命令 docker ps  看最右侧一列

docker run -itd --volumes-from loving_kowalevski centos bash

这样,我们使用centos镜像创建了新的容器,并且使用了 loving_kowalevski  容器的数据卷

说明:如果我们开启了10个容器,提供了web服务,且10个站点是负载均衡。宿主机的/data目录,都是挂载到容器的/data目录下,我们需要输入10次命令docker run -tid -v /data/:/data centos bash来实现,现在有了挂载数据卷功能,我们输入10次docker run -itd --volumes-from loving_kowalevski centos bash,其他9台会复制容器名字为loving_kowalevski的挂载内容,它改变挂载路径,其他9台也随之改变,且实了数据共享很方便。

3. 定义数据卷容器

有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。

首先建立数据卷容器,只是为了给其他容器共享数据用的目录。

docker run -itd -v /data/ --name testvol centos  bash  //注意这里的/data/是容器的/data目录,并非本地的/data/目录,里面是空的。容器名称可以自定义。然后进入该容器

docker exec -it testvol bash   #既可以写ID,也可以写名称。进入后可以看到data目录是空的。exit退出,然后让其他容器挂载该数据卷

docker run -itd --volumes-from testvol centos bash

然后进入第二个容器,可以df -h看到也有一个/data目录,也是空的,写入数据,容器1也同步了数据。

docker run -itd  --volumes-from testvol --name=web2 centos bash 在开启一个容器,名称为web2

然后进入第三台名为web2的容器,一样可以看到/data目录的数据共享。

对于第一台容器,他的/data是总的共享目录,所以一定要保护好,不要随便停止,删除。

Docker 数据卷的备份与恢复

备份

mkdir /vol_data_backup

docker run --volumes-from testvol -v /vol_data_backup/:/backup/centos tar cvf /backup/data.tar /data/

进入新的容器,然后打包容器1的共享目录到backup下。

说明:首先我们需要使用testvol数据卷新开一个容器,同时我们还需要把本地的/vol_data_backup/目录挂载到该容器的/backup下,这样在容器中/backup目录里面新建的文件,我们就可以直接在/vol_data_backup/目录中看到了。 然后再把/data/目录下面的文件打包到成data.tar文件放到/backup目录下面。

恢复

思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包。

新建数据卷容器1:

docker run -itd -v /data/ --name testvol2 centos bash

挂载数据卷新建容器,并解包:

docker run --volumes-from testvol2 -v /vol_data_backup/:/backup centos tar xvf /backup/data.tar

解压后,文件为/data目录和文件,所以我们需要在/下解压,文件自动覆盖到/data目录下。

说明:tar xvf /backup/data.tar是一条命令,可以直接跟在docker run ...后面,执行后退出。如同我们之前执行的 /bin/bash一样的道理。

时间: 2024-08-06 03:48:01

1.9-docker数据管理的相关文章

Docker数据管理(四)

Docker数据管理 Docker数据分为两种: 数据卷 -v /data -v src:dst 数据卷容器 --volumes-from 数据卷 案例1:我们创建一个容器,起名叫nginx-volume-demo1挂载到容器中的/data目录下 [[email protected] ~]# docker run -d --name nginx-volume-demo1 -v /data nginx 96892a7bb67e9c687f29d07ea674ca527ab09dee6b0ec121

Docker 数据管理

Docker 数据管理 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 1.  数据卷可以在容器之间共享和重用 2.  对数据卷的修改会立马生效 3.  对数据卷的更新,不会影响镜像 4.  卷会一直存在,直到没有容器使用 挂载本地目录到容器 创建一个数据卷 在用 docker run 命令的时候,使用 -v 标记来创建一个数据卷并挂载到容器里.在一次 run 中多次使用可以挂载多个数据卷. #sudo docker run -it -v ~/da

Docker数据管理及网络通信

Docker数据管理及网络通信 在Docker中,为了方便查看容器中产生的数据或者将多个容器中的数据共享,就涉及到容器的数据管理操作.管理Docker容器中的数据主要有两种方式:数据卷(Date Volumes)和数据卷容器(Data Volumes Containers). 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机和容器之间迁移.数据卷的使用类似于Linux下对目录进行的mo

Docker数据管理、网络通信以及资源控制

Docker的安装及镜像.容器的基本操作详见博客http://blog.51cto.com/11134648/2160257下面介绍Docker数据管理.网络通信以及资源控制的方法,详细如下: Doker数据管理 容器的数据管理操作可以方便查看容器内产生的数据或者将多个容器中的数据实现共享.管理Docker容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(Data Volumes Containers). 一.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主

(九)Docker数据管理

Docker数据管理,即Docker内部以及容器之间管理数据,主要有两种方式:数据卷和挂载. 1. 数据卷(Volume) volume,可供一个或多个容器使用的特殊目录. 数据卷可在容器之间共享和重用: 对数据卷的修改会立马生效: 对数据卷的更新,不会影响镜像: 数据卷默认会一直存在,即使容器被删除:(可通过 docker volume prune命令删除无效的volume) 数据卷的使用,类似于 2. 挂载主机目录(Bind mounts) 原文地址:https://www.cnblogs.

Docker 数据管理和网络通信

Docker 数据管理 在Docker中,为了方便查看容器内产生的数据或者将多个容器中的数据实现共享,就涉及到容器的数据管理操作.管理Docker容器中数据只要有两种方式:数据卷(Data Volumes)和数据卷容器(Data Volumes Containers) 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移. 1.创建数据卷 在docker run命令中使用-

3 docker数据管理

数据管理 关于容器中的数据 1.容器关闭,然后再启动容器,数据是存在的. 2.创建容器,然后把容器删除,数据随着容器的删除也被删除 3.如何删除容器不删除数据,在创建容器的时候可以采用以下做法 1 在创建容器时,挂载宿主机目录到容器 # docker run -itd -v /data/:/database centos 0ccaba523bc559b311b2b093b3b8617a9ddb2b4ac55124dd458dd991a240ae55 # docker exec -it 0cc /

docker数据管理与端口映射(三)

一.数据管理与端口映射   管理容器数据的方式: 数据卷: 将容器内的数据映射到宿主机目录. 数据卷容器: 使用特定容器维护数据卷.   1.在容器内创建一个数据卷:  # docker run -itd --name testpy --restart=always -v /data python:3    查看容器内是否有/data目录:  #docker exec -it testpy  或者:  #docker attach testpy 2.挂载一个主机目录作为数据卷./test是宿主机

Docker数据管理与网络通信

Docker镜像的创建方法 Docker镜像除了是Docker的核心技术之外也是应用发布的标准格式.一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的就是在容器中安装应用服务,如果要把已经 安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的方法有三种: 基于已有镜像创建 基于本地模板创建 基于Docherfile创建 基于已有镜像创建 使用docker commit命令,

Docker数据管理(五)

一.什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射到本地主机环境 数据卷容器:使用特定的容器来维护数据卷 数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似Linux 的mount挂载 数据卷的特性 数据卷可以在容器之间共享和重用,容器间传递数据将变得高效方便 对数据卷内数据的修改立马生效,无论是容器内还是本地操作 对数据