linux怎么查看本机内存大小
336
2022-10-20
Docker数据卷 Volume 挂载,容器路径与linux主机路径的一致性映射,mysql 实战
十年河东,十年河西,莫欺少年穷
学无止境,精益求精
本文参考:你必须知道的Docker数据卷(Volume) 【作者是阿里云最有价值MVP,第一次见到这个称呼~_~】
1.引言
docker的镜像是由多个只读的文件系统叠加在一起形成的。当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层。这时如果修改正在运行的容器中已有的文件,那么这个文件将会从只读层复制到读写层。该文件的只读版本还在,只是被上面读写层的该文件的副本隐藏。当删除docker,或者重新启动时,之前的更改将会消失。在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。
为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。
在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中。目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中:说白了就是当我们删除容器时,为了保留容器运行期间产生的数据,通过数据卷volume技术,实现容器内部与linux主机上文件目录共享的技术。
2.数据卷
2.1、创建数据卷,新建的数据卷默认会放在linux主机的位置为: /var/lib/docker/volumes 目录中
docer volume create 数据卷名称
2.2、 查看数据卷
docker volume ls // 查看所有容器卷docker volume inspect 数据卷名称 //查看数据卷详情
2.3、删除数据卷
# docker stop edc-nginx // 暂停容器实例# docker rm edc-nginx // 移除容器实例# docker volume rm edc-nginx-vol // 删除自定义数据卷
创建使用指定卷的容器,也称之为挂载数据卷
docker run -it --name=centos01 -v myvol01:/home/centosvol01 centos /bin/bash
其中myvol01 为我们创建的数据卷 /home/centosvol01 为容器内路径
如果不使用默认的数据卷存放路径,我们可以显式的指定一个本机路径,如下:
docker run -it --name=centos01 -v /home/share/centosvol01:/home/centosvol01 --name=centos002 centos /bin/bash
其中 /home/share/centosvol01 为本地路径 /home/centosvol01 为容器内路径
2.4、查看容器是否数据卷挂载是否成功
docker inspect 容器ID
此时,我们不管是在主机路径内新建一个文件,还是在容器内路径新建一个文件,都会展示到两个目录中。也可以理解为:这两个路径进行了双向绑定,或者一致性映射。
通过MYSQL进行实战
1、拉取Mysql镜像
docker pull mysql:5.7
2、设置MySql容器路径挂载、端口映射、登录密码 可参考官方文档:run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/comf.d -v /home/mysql/data:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
-d 后台运行
-p 端口映射
-v 数据卷挂载 两个-v 挂载两个目录
-e 环境配置,这里配置的是密码
--name 给容器起个名字
3、通过Navicat连接数据库,下载Navicat 地址:https://navicat.com/en/products
端口不能外连接,奶奶个腿
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~