docker容器目录_Docker进阶---数据管理2(主机目录验证、数据卷容器)

1.挂载主机目录方式验证

(1)创建一个目录,并在目录里面创建文件,文件内写入内容

[root@centos1 docker]# mkdir volume[root@centos1 docker]# cd volume[root@centos1 volume]# [root@centos1 volume]# echo "this is test file..." > test.txt[root@centos1 volume]# cat test.txt this is test file...

(2)容器创建数据卷【挂载目录方式】

在使用docker run的命令时,使用 -v 标记可以在容器内创建一个数据卷,并且可以指定挂在一个本地已有的目录到容器中作为数据卷:

[root@centos1 volume]# docker run -itd --name volume-test -v ${PWD}:/root/volume centos bash5275bf621d87f29b805f2778808a8aad716228da373b26c7bf4f6dfd6fdeb2dd
c6172a8880a5c4db786ff0f283e0db41.png

默认挂载的数据卷的权限是rw(可读写),如果要求ro(只读),则需要加上对应的ro参数,命令可改为:

docker run -itd --name volume-test -v ${PWD}:/root/volume:ro centos bash

(3)查看容器内的数据卷

进入容器找到root目录可查看到已挂载的数据卷:

[root@centos1 volume]# docker exec -it volume-test bash[root@5275bf621d87 /]# cd /root/[root@5275bf621d87 ~]# ls anaconda-ks.cfg volume[root@5275bf621d87 ~]# [root@5275bf621d87 ~]# cd volume/[root@5275bf621d87 volume]# ls -rlttotal 4-rw-r--r--. 1 root root 21 May 13 01:19 test.txt[root@5275bf621d87 volume]# [root@5275bf621d87 volume]# cat test.txt this is test file...

可以看出数据卷目录与容器内目录的内容是一样的。不管是在容器内部修改数据卷还是在外部修改数据卷,相对应的数据卷都会发生改变。

(4)在容器中修改

[root@5275bf621d87 volume]# echo "second line..." >> test.txt [root@5275bf621d87 volume]# cat test.txt this is test file...second line...[root@5275bf621d87 volume]# exitexit[root@centos1 volume]# cat test.txt this is test file...second line...

可以看出,容器中修改了数据卷下的文件后,容器外部看到的内容也同时更改了。

2. 数据卷容器

数据卷容器用于用户需要在容器间共享一些持续更新的数据,数据卷容器专门提供数据卷供其它容器挂载使用。

(1)创建数据卷容器

[root@centos1 volume]# docker run -itd --name db1 -v /dbdata centos bash8942d28e569f215280f394599d7c18a6f7d948f616eebbfe38eefa57a4ea900e

(2)共享数据卷容器

创建容器db2与db1共享dbdata的数据:

[root@centos1 volume]# docker run -itd --name db2 --volumes-from db1 centos bash34167d0273e3cc036059654d07ebcb42262d69000a297b56e8d1271b1b954274

(3)验证数据卷共享

在容器db1和容器db2任意一个容器修改dbdata的内容,在两个容器内均生效:

容器db1中:

[root@centos1 volume]# docker exec -it db1 bash[root@8942d28e569f /]# cd /dbdata/[root@8942d28e569f dbdata]# ls[root@8942d28e569f dbdata]# echo "test first file." > file1.txt

容器db2中:

[root@centos1 ~]# docker exec -it db2 bash[root@34167d0273e3 /]# cd /dbdata/[root@34167d0273e3 dbdata]# lsfile1.txt[root@34167d0273e3 dbdata]# cat file1.txt test first file.[root@34167d0273e3 dbdata]# echo "test append." >> file1.txt [root@34167d0273e3 dbdata]# 

容器db1中:

[root@8942d28e569f dbdata]# cat file1.txt test first file.test append.

如果删除了挂载的容器,数据卷并不会被自动删除,如果要删除一个数据卷,必须在删除最后一个还挂载它的容器时显示使用docker rm -v 命令指定同时删除关联的数据卷。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值