docker-数据管理

【docker-数据管理】寸阳分阴须爱惜,休负春色与时光。这篇文章主要讲述docker-数据管理相关的知识,希望能为你提供帮助。

运行的容器,生成新的数据或者修改了文件内容,新产生的数据将会被复制到读写层进行持久化保存,
读写层也就是容器的工作目录,此即:"写时复制"机制


?数据类型
通过镜像启动的容器添加了一层可读写的文件系统,用户写入的数据都保存在这一层当中,如果要将写入的数据永久
生效,需要将其提交为一个镜像,然后通过这个镜像再启动实例

docker的数据类型分为:
数据卷:类似于挂载的一块磁盘
数据容器:将数据保存在一个容器上


docker inspect -f ".State.Pid" mystifying_elbakyan #获取容器mystifying_elbakyan的PID
docker inspect id #查看指定pid的容器信息
docker exec -it id bash


dd if=/dev/zero of=file bs=1M count=100
md5sum file
cp anaconda-post.log /opt/anaconda-post.log
tree /var/lib/docker/overlay2/

#数据卷实际上就是宿主机上的目录或者文件,可以被直接mount到容器当中使用


#创建app目录并生成web页面
mkdir testapp
echo "Test App Page" > testapp/index.html

-v 将宿主机目录映射到容器内部,默认是可读写
docker run -d --name web1 -v
docker ps
echo "docker" > > /apps/tomcat/webapps/testapp/index.html #在容器内执行
bash docker-in.sh id bash
echo "111" > > /apps/tomcat/webapps/testapp/index.html#在宿主机执行


创建容器的时候指定参数-v ,可以删除/var/lib/docker/containers/的容器数据目录,默认不删除,但是不能删除数据卷的内容
#docker rm -f -v id


#数据卷的特点及使用
1、数据卷是目录或者文件,并且可以在多个容器之间共同使用
2、对数据卷更改数据容器里面会立即更新
3、数据卷的数据可以持久保存 ,即使删除,使用该容器卷的容器也不影响
4、在容器里面的写入数据不会影响到镜像本身

?数据卷使用场景?
日志输出
静态web页面
应用配置文件
多容器间目录或文件共享

?文件挂载
#文件挂载用于很少更改文件内容的场景,比如nginx的配置文件,tomcat的配置文件等
docker run -d --name web1 -v /root/bin/catalina.sh:/apps/tomcat/bin/catalina.sh:ro\\
-p 8811:8080 tomcat-web:app1

一次挂载多个目录
docker run -d --name web1 -v/root/bin/catalina.sh:/apps/tomcat/bin/catalina.sh:ro \\
-v/root/testapp:/apps/tomcat/webapps/testapp \\
-p 8811:8080 tomcat-web:app

?数据卷容器
数据卷容器最大的功能是可以让数据在多个docker容器之间共享
即:b容器可访问a容器的内容,c容器也可访问a容器的内容

docker run -d --name volume-docker \\
-v /root/bin/catalina.sh:/apps/tomcat/bin/catalina.sh:ro \\
-v /root/testapp:/apps/tomcat/webapps/testapp tomcat-web:app2

docker run -d --name web1 -p 8801:8080 --voumes-from volume-docker tomcat-web:app1
docker run -d --name web2 -p 8802:8080 --voumes-from volume-docker tomcat-web:app2

#测试关闭容器server测试能否启动新容器,是可以创建的
docker stop volume-docker
docker run -d --name web3 -p 8803:8080 --volumes-from volume-docker tomcat-web:app2

#测试删除源卷容器server,创建容器不能创建,但是对已经运行的容器不受任何影响
docker rm -fv volume-docker
docker run -d --name web4 -p 8804:8080 --volumes-from volume-docker tomcat-web:app2

#重新创建容器卷server
docker run -d --name volume-docker -v
docker run -d --name web4 -p 8804:8080 --volumes-from volume-docker tomcat-web:app2

数据卷容器可以作为共享的方式为其他容器提供文件共享,类似于nfs共享


    推荐阅读