Docker_学习笔记系列之数据卷

docker 数据卷目的是实现宿主机和容器,容器与容器之间数据共享

特点:

数据双向共享,改变任何一方其他都会改变

容器停掉或删掉不会影响宿主机数据,保证了数据的持久化和安全性,是复制属性

如果仅仅容器之间数据共享,则所有容器删除数据也就没了,但只要有一个,数据就还在

支持映射多个目录,加多个-v即可

1.查看数据卷映射信息

docker volume ls[root@python-node01 ~]# docker volume lsDRIVER             VOLUME NAMElocal               portainer_data

2.挂载的方式

# 1. 匿名挂载:只指定容器里的路径,不指定宿主机路径,默认会根据配置放到宿主机指定位置docker -d --name test01 -v /container_path nginx# 通过查看容器详细,可找到挂载到宿主机位置docker inspect 容器id# 2. 具名挂载:就是指定宿主机目录名字,默认在/var/lib/docker/volumes/名字docker -d --name test02 -v 设定宿主机目录名字不是路径:容器路径 nginx# 可通过docker volume inspect 查看目录挂载的详细信息docker volume inspect 宿主机目录名字# 3. 路径挂载docker -d --name test03 -v 宿主机映射路径:容器映射路径 镜像名或id# 扩展设定容器路径的容器里使用该目录的权限,如只读ro或可读写rw,默认可读写,在宿主机不受限制docker -d --name test04 -v /temp/test04:/container_path:ro

3.宿主机与容器映射同步

# 1. 启动容器时直接使用docker run -d --name 自定义容器名 -p 宿主机端口:容器端口 -v 宿主机映射路径:容器映射路径 镜像名或id# 2. 通过dockerfile实现,内容如下FROM centos# 容器内目录挂载,默认在容器根目录下创建,如下面容器里挂载2个目录,下面为匿名挂载,没有指定外部路径# 缺陷只能匿名挂载,没法指定宿主机路径volume ["volume01","volume02"]

4.容器与容器映射同步

# 启动第一个容器docker -d --name container01 -v /home/testpath:/container_path tomcat# 启动第二个容器,并继承第一个容器的映射,因为继承所以第二个都不需要指定映射目录docker -d --name container02 --volumes-from container02 tomcat# 并不会因第一个容器删除,其他容器的数据丢失,备份机制
©著作权归作者所有:来自51CTO博客作者mob604756e88498的原创作品,如需转载,请注明出处,否则将追究法律责任