DockerFile数据卷挂载、数据卷容器

DockerFile数据卷挂载

这种方式我们实际开发当中很常用
首先是我们创建一个脚本文件dockerfile 文件内容

FROM centos
VOLUME ["volume01","volume02"]
CMD echo "-------end-------"
CMD /bin/bash

我们通过buidld 创建一个镜像容器

这里记住一定要添加这个点.
docker build -f 脚本文件的位置 -t 镜像名字:tag .

docker build -f dockerfile -t aw:1.0 .

我们可以在容器内查看到创建的两个挂载卷
[root@Aw docker-test-volume]# docker exec -it 6e606f40b64b bash
[root@6e606f40b64b /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var	   volume02
dev  home  lib64  media       opt  root  sbin  sys  usr  volume01
我们在volume01里面创建一个文件
[root@6e606f40b64b /]# cd volume01
[root@6e606f40b64b /]# mkdir testVolume
[root@6e606f40b64b volume01]# ls
testVolume
[root@6e606f40b64b v



在这里插入图片描述

退出来之后我们通过容器id进行查找
docker inspect 容器id
在这里插入图片描述
我们可以看到这样方式生成的挂载目录是匿名的
我们通过上面查找的匿名进入目录进行查看

[root@Aw _data]# cd /var/lib/docker/volumes/8668351d837c1132e3360231f05f4cd6f9a2fcfa4928f745206eac6f576a0ef5
[root@Aw 8668351d837c1132e3360231f05f4cd6f9a2fcfa4928f745206eac6f576a0ef5]# ls
_data
[root@Aw 8668351d837c1132e3360231f05f4cd6f9a2fcfa4928f745206eac6f576a0ef5]# cd _data/
[root@Aw _data]# ls
testVolume

数据卷容器

我们会经常在多个mysql之间同步数据使用,
他的实现原理是通过–volumes-from 进行多个容器间的数据共享。他们是直接把夫类拷贝过来,这样他就是和夫类同级的了

我们还是使用我们之前的镜像先创建一个docker01镜像

#创建docker01容器
[root@Aw ~]# docker run -it -P --name docker01 aw:1.0 bash
[root@7281ac46ded4 /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var	   volume02
dev  home  lib64  media       opt  root  sbin  sys  usr  volume01
ctrl+q+p退出
#创建docker02容器 并--volumes-from继承成docker01容器
[root@Aw ~]# docker run -it -P --name docker02 --volumes-from docker01 aw:1.0 bash
[root@61cb5a8a4c1f /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var	   volume02
dev  home  lib64  media       opt  root  sbin  sys  usr  volume01
[root@61cb5a8a4c1f /]# cd volume01
[root@61cb5a8a4c1f volume01]# touch a.java  我们这个volume01数据卷中创建一个文件
[root@61cb5a8a4c1f volume01]# ls
a.java
ctrl+q+p退出

#我们进入docker01的容器中进行查看 我们可以看到a.java存在
[root@Aw ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
61cb5a8a4c1f   aw:1.0    "bash"    31 minutes ago   Up 31 minutes             docker02
7281ac46ded4   aw:1.0    "bash"    34 minutes ago   Up 23 minutes             docker01
[root@Aw ~]# docker attach 7281ac46ded4
[root@7281ac46ded4 /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var	   volume02
dev  home  lib64  media       opt  root  sbin  sys  usr  volume01
[root@7281ac46ded4 /]# cd volume01
[root@7281ac46ded4 volume01]# ls
a.java

#创建一个容器docker3同样继承docker01
[root@Aw ~]# docker run -it -P --name docker03 --volumes-from docker01 aw:1.0 bash
[root@8b8ddad3dec8 /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var	   volume02
dev  home  lib64  media       opt  root  sbin  sys  usr  volume01
[root@8b8ddad3dec8 /]# cd volume01
[root@8b8ddad3dec8 volume01]# ls
a.java
exit 退出
#停止docker01
[root@Aw ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
8b8ddad3dec8   aw:1.0    "bash"    33 minutes ago   Up 33 minutes             docker03
61cb5a8a4c1f   aw:1.0    "bash"    44 minutes ago   Up 44 minutes             docker02
7281ac46ded4   aw:1.0    "bash"    46 minutes ago   Up 2 minutes              docker01
[root@Aw ~]# docker stop 7281ac46ded4
7281ac46ded4
[root@Aw ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
8b8ddad3dec8   aw:1.0    "bash"    36 minutes ago   Up 36 minutes             docker03
61cb5a8a4c1f   aw:1.0    "bash"    48 minutes ago   Up 48 minutes             docker02
[root@Aw ~]# docker exec -it docker02 bash  进入docker02创建一个文件b.java
[root@61cb5a8a4c1f /]# cd volume01
[root@61cb5a8a4c1f volume01]# ls
a.java
[root@61cb5a8a4c1f volume01]# touch b.java
[root@61cb5a8a4c1f volume01]# ls 
a.java	b.java
[root@61cb5a8a4c1f volume01]# exit
exit
#进入容器docker03  查看到文件亦然存在
[root@Aw ~]# docker exec -it docker03 bash
[root@8b8ddad3dec8 /]# cd volume01
[root@8b8ddad3dec8 volume01]# ls
a.java	b.java
[root@8b8ddad3dec8 volume01]# exit
exit
#删除容器docker01 也是一样

mysql实现的的情况

docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql:8.0
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root  --name mysql02 --volumes-from mysql01 mysql:8.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值