docker的数据卷的作用

一  数据卷

1.1 数据卷

数据卷就是宿主机上的一个目录或者文件,当容器目录和数据卷目录绑定后,对方的修改会立即同步。

一个数据卷可以被多个容器同时挂载

一个容器也可以被挂载多个数据卷

1.2 数据卷的作用

1.Docker 容器删除后,在容器中产生的数据也会随之销毁,所以使用数据卷避免这种情况

 简而言之: 数据卷实现容器数据持久化

2.Docker 容器和外部机器可以直接交换文件吗? 答案是否定的,外部机器只能和宿主机通信,宿主机跟容器通信,而外部机器不能直接和容器进行通信。

简而言之: 外部机器和容器间接通信

3.容器之间能进行数据交互吗?答案是肯定的;

简而言之: 容器之间数据交换

1.3 配置数据卷

创建启动容器时,使用 –v 参数 设置数据卷

格式:

docker run ... –v 宿主机目录(文件):容器内目录(文件)

[root@localhost docker-demo]# docker run -it --name=c3 -v /root/docker-demo/tomcat-c3:/root/tomcat-container tomcat:8.5.6 /bin/bash

 注意事项:      

  1. 目录必须是绝对路径        

  2. 如果目录不存在,会自动创建      

  3. 可以挂载多个数据卷

1.4 操作案例

创建一个tomcat的容器,含有数据卷的容器

1.4.1 创建一个宿主机目录

[root@localhost docker-demo]# mkdir -p tomcat-c3
[root@localhost docker-demo]# ls
tomcat-c3

 1.4.2 创建一个含有数据卷的容器

[root@localhost docker-demo]# docker run -it --name=c3 -v /root/docker-demo/tomcat-c3:/root/tomcat-container tomcat:8.5.6 /bin/bash
root@5caa9158a844:/usr/local/tomcat# ls
LICENSE  NOTICE  RELEASE-NOTES    RUNNING.txt  bin  conf    include  lib  logs  native-jni-lib  temp  webapps  work
root@5caa9158a844:/usr/local/tomcat# cd bin
root@5caa9158a844:/usr/local/tomcat/bin# cd ..
root@5caa9158a844:/usr/local/tomcat# cd logs
root@5caa9158a844:/usr/local/tomcat/logs# ls
root@5caa9158a844:/usr/local/tomcat/logs# cd ..
root@5caa9158a844:/usr/local/tomcat# ls
LICENSE  NOTICE  RELEASE-NOTES    RUNNING.txt  bin  conf    include  lib  logs  native-jni-lib  temp  webapps  work
root@5caa9158a844:/usr/local/tomcat# cd bin
root@5caa9158a844:/usr/local/tomcat/bin# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-8-openjdk-amd64/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
3.外面访问:宿主机的ip为:192.168.1.47

4.在宿主机的目录:/root/docker-demo/tomcat-c3下新建一个文件,并写入一些内容

[root@localhost tomcat-c3]# touch docker-test.txt
[root@localhost tomcat-c3]# ls
docker-test.txt
[root@localhost tomcat-c3]# vi docker-test.txt 
[root@localhost tomcat-c3]# more docker-test.txt  

wo zai xue xi docker,wo zai suzhuji chuangjain !

5.在docker容器中的/root/tomcat-container的目录下,进行查看

root@5caa9158a844:~# cd tomcat-container/
root@5caa9158a844:~/tomcat-container# ls

docker-test.txt
root@5caa9158a844:~/tomcat-container# more docker-test.txt 

wo zai xue xi docker,wo zai suzhuji chuangjain !
root@5caa9158a844:~/tomcat-container# 

6.注意:

oot@5caa9158a844:~# cd tomcat-container/
root@5caa9158a844:~/tomcat-container# ls

ls: cannot open directory .: Permission denied
root@5caa9158a844:~/tomcat-container# cd ..
root@5caa9158a844:~# ls

需要在宿主机执行:setenforce 0  命令,来解决。

[root@localhost tomcat-c3]# setenforce 0

总结:容器和宿主机实现了同步机制。这样不怕数据丢失了!


1.5 容器之间配置数据卷

 创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷

 docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash

 docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash

在c3进行的操作,自然就会同步到c1,c2容器中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值