Docker数据卷的作用
Docker将应用和环境打包形成一个镜像,通过镜像生成容器并运行。因为数据都存储在容器中,如果不通过docker commit生成新的镜像使数据作为镜像的一部分保存下来,那么当容器删除后,数据就会丢失。
卷技术就是可以将容器中产生的数据,同步到本地。将我们容器内的目录挂载到宿主机上。
使用数据卷
方式一:直接使用命令挂载
-v
例:
docker run -it -v "主机目录":"容器内目录" -p "主机端口":"容器内端口"
docker run -it -v /home/ceshi:/home centos /bin/bash
方式二:Dockerfile中的VOLUME命令
FROM centos
VOLUME ["volume01","volume02"] #创建两个匿名挂载
CMD /bin/bash
方式三:数据卷容器
--volumes-from
例:
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
doceker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02
--volumes-from mysql01 mysql:5.7
#以上示例可以实现两个mysql数据同步
#容器之间的配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
挂载类型
具名挂载
-v "卷名":"容器内路径"
例子:
docker run -d -P name nginx -v juming-nginx:/etc/nginx nginx
匿名挂载
-v "容器内路径"
例子:
docker run -d -P --name nginx -v /etc/nginx nginx
指定路径挂载
-v "宿主机路径":"容器内路径"
例子:
docker run -d -P --name nginx -v /home/nginx:/etc/nginx/conf.d nginx
拓展
ro #只读
rw #可读可写
例子:
docker run -d -P --name nginx -v juming:/etc/nginx:ro nginx #ro说明这个路径只能通过宿主机操作,容器内部无法操作。
docker run -d -P --name nginx -v juming:/etc/nginx:rw nginx