Docker 容器卷
一、介绍
如果数据都在容器中,容器已删除,数据都会丢失。容器之间可以有一个共享的技术。docker容器产生的数据,可以同步到本地。将容器内的目录,挂载到linux上面。
二、制作镜像
docker commit -m="提交信息" -a="作者" 容器id 目标镜像名:tag #制作镜像文件,tag 版本号
三、使用数据卷
1、使用命令挂载 -v , 本地和容器可以互相影响
docker run -it -v 主机目录 :容器目录 #挂载
docker inspect #可以看到挂载信息
2、运行mysql
-d 后台运行
-p 端口映射
-v 数据卷挂载
-e 环境配置
--name 容器名字
docker run -d -p 3310: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
四、匿名挂载与具名挂载
1、 匿名挂载
-v 挂载路径
docker run -d --nginx02 -v /etc/nginx nginx # -v 时只写了容器内的地址,没有写容器外的地址
2、具名挂载
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx # 通过 -v 卷名:容器内路径
docker volume inspect juming-nginx #通过具名挂载可以方便我们找到卷
3、区分时匿名还是具名挂载
-v 容器内路径 # 匿名挂载 -v 具名:容器内路径 #具名挂载 -v /宿主机路径:容器内路径 #指定路径挂载
4、只读与可读可写
ro # readonly 只读 只要看到ro,就说明这个路径只能由宿主机来操作,容器内部无法操作
rw # readwrite 可读可写
docker run -d -P --name nginx04 -v juming-niginx-01:/etc/nginx:ro nginx #ro只读
docker run -d -P --name nginx04 -v juming-niginx-01:/etc/nginx:rw nginx
五、Dockerfile
Dcokerfile 就是用构建docker镜像的构建文件
创建一个DockerFile文件,名字可以随机
#文件中的内容,指令(大写) 参数
#test-iamges Dockerfile名字
FROM centos VOLUME ["volume01","volume02"] #挂载卷 CMD echo "----------end-----------" CMD /bin/bash
生成镜像命令
docker build -f test-iamges -t dongsheng/centos . # test-iamges Dockerfile文件名 dongsheng/centos 镜像名字
容器间的数据共享
--volumes-from #共享命令
共享的是 volume01 volume02 挂载卷
先创建一个容器
docker run -it --name docker01 f0a85d1596be
创建第二个容器
docker run -it --name docker02 --volumes-from docker01 dongsheng/centos
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用为止。