Docker之数据管理
在对容器内的数据进行备份、或者多个容器间的共享时涉及到容器内的数据管理。
引入了数据卷、数据卷容器的概念。
数据卷
数据卷是一个特殊的目录,类似与linux的mount挂载,可以在宿主机与容器、容器与容器之间进行文件的访问。
- 数据卷可以共享和重用
- 数据卷的修改会立即生效
- 对数据卷的更新不会影响镜像
- 卷会一直存在,直到满意容器使用
挂载一个主机目录作为数据卷:
# 在创建容器的时候使用-v参数,可以多次使用
# 将容器80端口映射到宿主机5000端口,创建数据卷,将主机的/data挂载到容器/var/data中,默认文件权限是读写,可以通过添加参数ro设置为制度
docker run -itd -p 5000:80 -v /data:/var/data --name nginx nginx
docker run -itd -p 5000:80 -v /data:/var/data:ro --name nginx nginx
数据卷容器
就是使用一个容器专门用来进行数据存储和共享使用。
# 创建一个数据卷容器,创建一个数据卷/dbdata
docker run -itd -v /dbdata --name dbdata centos
# 创建两个客户端容器挂载数据卷容器,在docker run时通过 --volumes-from挂载
docker run -itd --name db1 --volumes-from dbdata centos
docker run -itd --name db2 --volumes-from dbdata centos
# 进入两个容器内都能看的/dbdata目录,现在三个容器都挂载了数据卷/dbdata,任何一方进行修改都能看的到
# 在dbdata进行修改,在db1和db2都能看到
docker exec -it dbdata /bin/bash
touch test.txt
# 可以通过多次使用--volumes-from挂载多个数据卷容器或者从已挂载数据卷容器的容器挂载,比如db1