docker07-数据存储
Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式:
数据卷(Volumes)
挂载主机目录 (Bind mounts)
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:数据卷可以在容器之间共享和重用对
数据卷的修改会立马生效对
数据卷的更新,不会影响镜像数据卷默认会一直存在,即使容器被删除
注意:
数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。创建一个数据卷Volumes
#创建
[root@node1 ~]# docker volume create my-vol
my-vol
#查看
[root@node1 ~]# docker volume ls
DRIVER VOLUME NAME
local my-vol
#详细查看
[root@node1 ~]# docker volume inspect my-vol
[
{
"CreatedAt": "2021-02-17T10:54:32+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
"Name": "my-vol",
"Options": {},
"Scope": "local"
}
]启动一个挂载数据卷的容器
[root@node1 ~]# docker run -itd --name web -v my-vol:/usr/share/nginx/html nginx:latest
b87a20e4630fa1c1dda606a757ab27cd7d1708057610094a75ff4771dc8db6c0查看web容器的详细信息
[root@node1 ~]# docker inspect web
......
#找到mount字段
"Mounts": [
{
"Type": "volume",
"Name": "my-vol",
"Source": "/var/lib/docker/volumes/my-vol/_data",
"Destination": "/usr/share/nginx/html",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],删除数据卷
[root@node1 ~]# docker volume rm my-vol
数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用docker rm -v这个命令。无主的数据卷可能会占据很多空间,要清理请使用以下命令
$ docker volume prune
挂载一个主机目录作为数据卷Bind mounts
使用 一个本地主机的目录挂载到容器中去。
[root@node1 ~]# docker run -itd -P -v /html:/usr/share/nginx/html nginx:latest
1e691d2c4a72ef328d134e3448a9f59f5abf9150dfc7c08d8c15423922e32aa0上面的命令加载主机的
/html目录到容器的/usr/share/nginx/html目录。这个功能在进行测试的时候十分方便,比如用户可以放置一些程序到本地目录中,来查看容器是否正常工作。本地目录的路径必须是绝对路径,以前使用-v参数时如果本地目录不存在 Docker 会自动为你创建一个文件夹,现在使用--mount参数时如果本地目录不存在,Docker 会报错。Docker 挂载主机目录的默认权限是
读写,用户也可以通过增加readonly指定为只读。[root@node1 ~]# docker run -itd -P -v /html:/usr/share/nginx/html:ro nginx:latest
d646bf5df9f33ca50c7ab5e36ae59ca9a84cc13980a60162184806adc255eec2
#在宿主机目录创建文件没有问题
[root@node1 ~]# touch /html/index.html
[root@node1 ~]# docker exec -it d646bf sh
# cd /usr/share/nginx/html
# touch index.html
touch: cannot touch 'index.html': Read-only file system
触摸:不能触摸索引。只读文件系统查看数据卷的具体信息
[root@node1 ~]# docker inspect d646bf
"Mounts": [
{
"Type": "bind",
"Source": "/html",
"Destination": "/usr/share/nginx/html",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
}
]

容器的跨主机网络共享
通过nfsserver实现,管理2台nginx容器
IP 服务 192.168.1.1 nginx容器w1
192.168.1.2 nginx容器w2 192.168.1.4 nfs-server 1、搭建nfs
yum -y install nfs-utils
mkdir /html
vim /etc/exports
cat /etc/exports
#/html *(rw,sync,no_root_squash)
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
echo hello > /html/index.html2、docker01
[root@node1 ~]# mkdir /www
[root@node1 ~]# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/html *
[root@node1 ~]# mount -t nfs 192.168.1.4:/html /www
root@node1 ~]# ls /www/
index.html[root@node1 ~]# cat /www/index.html
hello[root@node1 ~]# docker run -itd --name w1 -p 666:80 -v /www:/usr/share/nginx/html nginx:latest
1c247e5147486ecd6f25feb623de727fdc1c54ddcf452e1bdd99f772381546d5访问测试:
[root@node1 ~]# curl 192.168.1.1:666
hello3、docker02
[root@node2 ~]# mkdir /www
[root@node2 ~]# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/html *
[root@node2 ~]# mount -t nfs 192.168.1.4:/html /www
[root@node2 ~]# cat /www/index.html
hello
[root@node2 ~]# docker run -itd --name w2 -p 666:80 -v /www:/usr/share/nginx/html nginx:latest
88fcd09b2ce93ef9085466a0ffb3f69fac66272bc0b4b39dec6a7886aa033f83
访问测试
[root@node2 ~]# curl 192.168.1.2:666
hello4、修改nfs挂载文件,实现nginx容器网页同步
[root@nfs-server html]# cat index.html
hello
[root@nfs-server html]# echo 404 > index.html
[root@nfs-server html]# cat index.html
404
————————————————————————————————————-
[root@node1 ~]# curl 192.168.1.1:666
404
[root@node2 ~]# curl 192.168.1.2:666
404
docker07-数据存储的更多相关文章
- Kooboo CMS技术文档之三:切换数据存储方式
切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...
- Android之网络数据存储
一.网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中. 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法. 本文利用LeanCloud ...
- Android之文件数据存储
一.文件保存数据介绍 Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的.文件可用来存放大量数据,如文本.图 ...
- Android之SharedPreferences数据存储
一.SharedPreferences保存数据介绍 如果有想要保存的相对较小键值集合,应使用SharedPreferences API.SharedPreferences对象指向包含键值对的文件并提供 ...
- Atitit 数据存储视图的最佳实际best practice attilax总结
Atitit 数据存储视图的最佳实际best practice attilax总结 1.1. 视图优点:可读性的提升1 1.2. 结论 本着可读性优先于性能的原则,面向人类编程优先于面向机器编程,应 ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- Android数据存储之GreenDao 3.0 详解
前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...
- Vertica增加一个数据存储的目录
Vertica增加一个数据存储的目录 操作语法为: ADD_LOCATION ( 'path' , [ 'node' , 'usage', 'location_label' ] ) 各节点添加目录,并 ...
- 安卓android sharepreference数据存储,保存输入框里面的数据
Fragment 里面 使用轻量级的数据存储sharepreference ,代码思路清晰.保存输入框里面的数据,实现按钮保存. 个人项目中简单清晰代码: 赵存档 编写 ,可以参考: 类继承Fragm ...
随机推荐
- Django-初阶实例
调用本地css文件的方法 setting.py里面的内容 import os # Build paths inside the project like this: os.path.join(BASE ...
- 导出exe的经验
安装pyinstaller 首先要找到scripts的绝对路径(主要是找到scripts就行了 先是安装C:\Users\96290\AppData\Local\Programs\Python\Pyt ...
- 【2020CSP-S模拟赛day5】总结
爆零自闭赛 写在前面 于2022.11.1 这一次题目质量很高(以至于什么都不会) 再一度体验了省选Orz.比赛大体情况,刨去std, wzc神仙230分,比剩下的加起来都高.zyz神仙60分. 其余 ...
- 导出带有图片的excel
public static void main(String[] args) { try { FileOutputStream out = new FileOutputStream("d:\ ...
- Vue基础之生命周期函数[残缺版]!
Vue基础之生命周期函数[残缺版]! 为什么说是残缺版呢?! 因为有一些周期函数我并没有学到!所以是残缺版! 01 beforeCreate //在实例初始化之后,数据观测 (data observe ...
- 。SLI,Service Level Indicator,服务等级指标,其实就是我们选择哪些指标来衡量我们的稳定性。而 SLO,Service Level Objective,服务等级目标,指的就是我们设定的稳定性目标,比如“几个 9”这样的目标。
.SLI,Service Level Indicator,服务等级指标,其实就是我们选择哪些指标来衡量我们的稳定性.而 SLO,Service Level Objective,服务等级目标,指的就是我 ...
- git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学
小结: 1.如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来 2.注意 git clone 应指定版本,它复制的这个版本的全部历史信息: 各个分支 git init 数据库 ...
- P6739 [BalticOI 2014 Day1] Three Friends 题解
目录 写在前面 Solution 何为字符串哈希(可跳过): Code 写在前面 P6739 [BalticOI 2014 Day1] Three Friends 听说这题可以用比较暴力的做法过,比如 ...
- Spring框架——JDBC与事务管理
JDBC JDBCTemplate简介 XML配置JDBCTemplate 简化JDBC模板查询 事务管理 事务简介 Spring中的事务管理器 Spring中的事务管理器的不同实现 用事务通知声明式 ...
- python——模块、标准库、第三方模块安装
模块(module)简介 模块化--指将一个完整的程序分解为一个一个小的模块,通过将模块组合,来搭建出一个完整的程序. 模块化的特点: ① 方便开发 ② 方便维护 ③ 模块可以复用! 在Python中 ...