Docker容器卷挂载

数据都在容器中,那么我们容器删除,数据就会丢失,所以容器与宿主机之间需要有一个数据共享技术!Docker容器中产生的数据,同步到本地!通过docker的卷挂载,将我们容器内的目录挂载到linux目录上面,这就是券挂载技术。

docker run -v 宿主机目录:容器目录

docker run -it -v /home/test:/home centos /bin/bash

通过这样的方式宿主机的/home/test就与容器/home目录建立了联系,这样不管当宿主机还是容器做了修改,互相都可见。并且就算容器停止阶段,宿主机对改挂载目录做了修改,容器重新启动后依然能看到修改后的内容,这样的话就占用了2倍的存储空间


Mysql数据同步挂载案例

1、docker pull mysql:5.7

2、docker run -d -p 3344:3306
-v /home/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

3、然后通过Navicat连接上宿主机3344端口,并且创建一个test数据库

容器:

宿主机:

可以发现宿主机和容器都创建了test库


挂载又可细分为三种

  • 匿名挂载
  • 具名挂载
  • 指定路径挂载

 匿名挂载:顾名思义挂载的时候没有指定宿主机的挂载路径

docker run -d -P --name nginx01 -v /etc/nginx nginx # -P 随机指定端口

通过这种方式挂载会在宿主机自己生成一个路径,那如何查看呢?

# 获取所有volume

docker volume ls

#查看某个volume的挂载情况

docker volume inspect 卷名

Docker容器卷挂载_第1张图片

 具名挂载:指定具体挂载的券名

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx 

Docker容器卷挂载_第2张图片

匿名和具名在没有指定目录的情况下都是在/var/lib/docker/volumes/xxxxx/_data目录下

指定路径挂载: 指定具体的宿主机挂载路径

我们通过具名挂载可以方便的找到我们的一个卷,大多数情况下使用的是具名挂载

拓展

# 有时会在容器后指定 ro或者rw 

#ro(readOnly,表示容器内只能读,只能通过宿主机操作)

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx 

#rw(readWrite,可读可写)

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx 

参考链接:

【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili 

你可能感兴趣的:(docker,docker,linux,运维)