容器数据卷

什么是容器数据卷

docker理念回顾

将应用和环境打包成一个镜像

如果数据都在容器中,那么我们容器删除,数据就会丢失。需求:数据持久化

MySql容器删了===》删库跑路  需求:MySql数据可以存储在本地

容器之间有一个数据共享的技术,Docker容器中产生的数据同步到本地

这就是卷技术,目录的挂载将我们容器内的目录挂载到Linux上面

 

 

总结一句话,容器的持久化和同步操作,容器间也是可以数据共享的

 

 

 

使用数据卷

 

方式一:使用命令来挂载

 

 

docker run -it -v 主机目录:容器目录 image /bin/bash

 

在主机中输入
docker run -it -v /home/ceshi:/home centos /bin/bash

 

 

新建一个会话,在主机中输入

[root@iZmu0fa4hv0jwzZ home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
1e4176d89cd7   centos    "/bin/bash"   3 minutes ago   Up 3 minutes             wizardly_bardeen
[root@iZmu0fa4hv0jwzZ home]# docker inspect 1e4176d89cd7

可以找到

        "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi",    #主机内地址
                "Destination": "/home",     #docker容器内地址
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

 

测试挂载是否成功

在容器内的/home目录下输入

[root@1e4176d89cd7 home]# touch test.java

可以看见在主机内测试目录中有test.java文件

[root@iZmu0fa4hv0jwzZ home]# ls ceshi
test.java

关闭容器

[root@1e4176d89cd7 home]# exit
exit
[root@iZmu0fa4hv0jwzZ home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

在主机中编辑test.java

[root@iZmu0fa4hv0jwzZ ceshi]# vim test.java 
hello world

启动容器

[root@iZmu0fa4hv0jwzZ home]# docker ps -a
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS                        PORTS     NAMES
1e4176d89cd7   centos       "/bin/bash"              22 minutes ago   Exited (0) 3 minutes ago                wizardly_bardeen
e15284bd88f5   tomcat:9.0   "catalina.sh run"        3 hours ago      Exited (143) 18 minutes ago             tomcat01
03ae4ad1999f   nginx        "/docker-entrypoint.…"   5 hours ago      Exited (0) 3 hours ago                  nginx01
[root@iZmu0fa4hv0jwzZ home]# docker start 1e4176d89cd7
1e4176d89cd7
[root@iZmu0fa4hv0jwzZ home]# docker attach 1e4176d89cd7
[root@1e4176d89cd7 /]# cd /home
[root@1e4176d89cd7 home]# ls
test.java
[root@1e4176d89cd7 home]# cat test.java 
hello world

可以发现docker容器中的test.java也被修改了,说明挂载是有效的

使用容器数据卷的好处:以后修改只需要在本地即可,容器内会自动同步

 

posted @ 2021-06-20 22:39  路过的柚子厨  阅读(61)  评论(0编辑  收藏  举报