暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

K8S:基础篇之Docker(Docker存储篇)

原创 清酒和歌 2020-08-14
684

概述

这是一个Kubernetes系列文章,主要将我所学过,所使用过的经验、使用方法等记录在此。将会持续更新。
之前的几篇文章分别讲述了Docker基础使用、Dockerfile编写、Docker Registry搭建及使用,本篇将讲述的是Docker存储相关。
对于任何公司或人来说,数据是无价的,如何保证数据不丢失,如何保证数据完整性,这是永恒的命题。任何服务只要运行起来,其中的数据,是一定要保存妥当的。
对于Docker来说,也不例外。

Docker数据管理方式

总体来说,Docker的数据内部管理及组织方式有两种:

  • 数据卷(Data Volumes)
  • 挂载主机目录 (Bind mounts)

数据卷

其实在之前的文章中,我们已经有过一定的数据卷挂载经历,你一定还记得,卷(体积)的英文名称叫什么,就是Volumes,那么命令也呼之欲出了,就是-v参数。
还有一个参数,叫做–mount,也可以用来挂载。

使用

我们可以直接在docker run的时候指定一个数据卷,也可以使用独立的命令来创建一个数据卷,独立创建的命令为:

[root@localhost harbor]# docker volume --help Usage: docker volume COMMAND Manage volumes Commands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumes Run 'docker volume COMMAND --help' for more information on a command. [root@localhost harbor]# --接下来我们查看创建的卷: [root@localhost harbor]# docker volume create vol-1 vol-1 [root@localhost harbor]# docker volume ls DRIVER VOLUME NAME local vol-1 [root@localhost harbor]# --删除卷,可以使用: [root@localhost harbor]# docker volume rm vol-1 vol-1
复制

一般来说,无论是-v或者是–mount参数,都是指定容器内部的目录映射到主机上的。那么,如果想要将主机上的目录映射到容器内部呢,那么也是可以的,具体可以使用:

[root@localhost harbor]# docker run -it --mount type=bind,source=/root,target=/root -d nginx:v1 be595528bde1807d26c74448750f34e9334a18f509140079e285ff35879411a1 具体格式为: --mount type=bind,source=主机目录,target=容器内目录 [root@localhost harbor]# docker exec -it be595528bde1 /bin/bash --进入容器内部查看/root目录下的东西 [root@be595528bde1 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@be595528bde1 /]# cd /root/ [root@be595528bde1 ~]# ls index_strace.txt jemalloc-5.2.0-1.el7.x86_64.rpm my_check.sh redis-5.0.2-1.el7.x86_64.rpm innodb_ruby-0.9.16.gem mongodb-4.0.11-1.el7.x86_64.rpm mysql_test-5.7.26-1.el7.x86_64.rpm undrop-for-innodb [root@be595528bde1 ~]# cd ~ [root@be595528bde1 ~]# exit --退出容器 exit [root@localhost harbor]# ls ~/ --查看主机下的/root目录下的东西,是一致的 index_strace.txt jemalloc-5.2.0-1.el7.x86_64.rpm my_check.sh redis-5.0.2-1.el7.x86_64.rpm innodb_ruby-0.9.16.gem mongodb-4.0.11-1.el7.x86_64.rpm mysql_test-5.7.26-1.el7.x86_64.rpm undrop-for-innodb [root@localhost harbor]#
复制

docker挂载的模式默认为读写,当然,也可以设置为只读,只需要在–mount后面加一个readonly参数就可以了,示例:

[root@localhost harbor]# docker run -it --mount type=bind,source=/root,target=/root,readonly -d nginx:v1 4010e168433496003f61109edd3f6a83a3941b81536ac69c1703d980e7b5624b
复制

至此,存储篇基本讲解完毕,下一篇讲会讲述Docker 网络结构以及如何使用。

最后修改时间:2020-08-16 13:16:30
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论