Docker数据管理和网络基础
默认情况下,当用户退出容器而容器中又没有非守护进程在运行时,容器会进入关闭状态,同时,数据的修改会保留在层级的可写文件系统内。当用户需要重新开启一个容器时,是无法访问原来所做的修改的,而是恢复到镜像的初始化状态。为了解决数据持久化的问题,Docker提供了卷和卷容器机制。
1、卷
简单说来,卷就是将宿主机中的某个目录,mount到容器中,这样,在容器中此目录下的修改,即便容器关闭,数据也会保留下来,供宿主机和其他容器访问。
有很多种使用方式,例如:
1、在运行容器的时候,在Docker中创建一个数据卷
docker run -dti -v /data centos
#在docker中会有/data目录,这个目录不归属于层级文件系统
ls /data -d
/data
2、将宿主机的一个目录,挂在到容器里,这种方式,数据可以保存在宿主机中
#例如将宿主机的/var/data挂载到容器中的/data
docker run -tdi -v /var/data:/data centos
3、挂载单个文件到容器中
docker run -tdi ~/dbback.tar.gz:/dbback.tar.gz centos
2、数据卷容器
数据卷容器的作用是,其中挂载的数据卷,可以被使用它的容器,共同使用。也就是多个容器之间可以同时使用这个数据卷,容器对他的写入内容,在其他容器也能看到。
创建创建一个数据卷容器
#创建一个包含数据卷的容器供其他容器使用,这个容器并不需要一直开启
docker run -tdi -v /data --name data_s centos
#创建两个容器,使用这个数据卷容器
docker run -ti --volumes-from data_s --name web1 centos
docker run -ti --volumes-from data_s --name web2 centos
#此时这两个容器,都可以共同读写/data目录了
#如果需要将数据同步到宿主机的目录中,则创建数据卷容器的时候,选择挂载宿主机的目录,如:
docker run -tdi -v /data:/data --name data_s centos