容器数据卷
挂载(双向绑定)
1、下载centos镜像
docker pull centos
2、启动,绑定路径
# -v 宿主机的目录:容器内的目录
docker run -it -v /home/linux_yzw:/home/docker_yzw centos
容器内:
[root@iZx1c8ur3cbwpvZ ~]# docker run -it -v /home/linux_yzw:/home/docker_yzw centos
[root@9e79280a94a3 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@9e79280a94a3 /]# cd /home/docker_yzw
[root@9e79280a94a3 docker_yzw]# ls
[root@9e79280a94a3 docker_yzw]#
宿主机内:
[root@iZx1c8ur3cbwpvZ /]# ls
bin dev home lib64 media opt proc run srv tmp var
boot etc lib lost+found mnt patch root sbin sys usr www
[root@iZx1c8ur3cbwpvZ /]# cd /home/linux_yzw
[root@iZx1c8ur3cbwpvZ linux_yzw]# ls
[root@iZx1c8ur3cbwpvZ linux_yzw]#
3、检验是否双向绑定了
方式1:宿主机内创建,查看容器
在宿主机内创建文件a.txt,查看docker容器内是否对应生成了文件
容器内生成了
方式2:容器内创建,查看宿主机
在容器内创建文件b.txt,查看宿主机内是否对应生成了文件
宿主机内生成了
方式3:关闭容器,宿主机内创建,启动容器查看是否有文件
关闭容器
宿主机内创建c.txt
启动容器查看是否有文件
结论:容器就算是关闭的,宿主机照样会把文件同步进去
Mysql部署安装
1、拉取镜像
2、挂载目录,运行
-d 后台运行
-p 端口映射
-v 目录挂载
-e 设置数据库登录密码(账号root)
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 mysql_01 mysql
3、windows用navicat连接远程docker里面的Mysql
4、新增两个数据库 demo1、demo2,对应的绑定目录相应有变化
新增前:
新增后:
结论:docker里面的数据变动都会对应到宿主机上
具名挂载和匿名挂载(没理解,后续再说)
初步理解:
是指将容器内的目录文件持久化到宿主机上的一种方式
匿名挂载:
命令
docker run -d -name 名字 -v /docker/yzw 镜像
在容器内是/volume1目录
对应的宿主机位置:
(1)退出容器:ctrl+P+Q
(2)在宿主机执行 docker inspect 容器名或者容器id
(3)找到对应的宿主机上的映射位置/var/lib/docker/volumes/ac69fd04c47ac2dd6ac8b36d82a8520dcfc470e91c4274ac469442816b410ce0/_data
- 这里的一长串ac69fd04c47ac2dd6ac8b36d82a8520dcfc470e91c4274ac469442816b410ce0是匿名生成的随机数字
(4)进入对应容器内的/volume1目录和宿主机的/var/lib/docker/volumes/ac69fd04c47ac2dd6ac8b36d82a8520dcfc470e91c4274ac469442816b410ce0/_data目录,检验是否双向绑定了
具名挂载:
命令
docker run -d -name 名字 -v dir_name:/docker/yzw 镜像
在容器内是/volume1目录
对应的宿主机位置:
(1)退出容器:ctrl+P+Q
(2)在宿主机执行 docker inspect 容器名或者容器id
(3)找到对应的宿主机上的映射位置/var/lib/docker/volumes/volume_name/_data
- 这里的volume_name与上面的
docker run -d -name tomcat_02 -v volume_name:/volume1 tomcat
中的volume_name是对应的
结论:不论匿名挂载还是具名挂载,最终的宿主机对应的挂载目录都是
/var/lib/docker/volumes/xxxxxe/_data目录, 其中xx