Docker数据管理(四)
Docker数据管理
Docker数据分为两种:
数据卷
- -v /data
- -v src:dst
数据卷容器
- --volumes-from
数据卷
案例1:我们创建一个容器,起名叫nginx-volume-demo1挂载到容器中的/data目录下
[root@linux-node1 ~]# docker run -d --name nginx-volume-demo1 -v /data nginx
96892a7bb67e9c687f29d07ea674ca527ab09dee6b0ec1217bd5aebf328d8f44
进入容器,目录下已经有我们data目录
[root@linux-node1 ~]# ./docker_in.sh nginx-volume-demo1
root@96892a7bb67e:/# ls /
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
查看当前挂载目录
root@96892a7bb67e:/# mount
/dev/mapper/docker-8:2-134698748-3b4e90ae453399aae2cd6b256c6e27996eaabd478669263beb955efb9def6017 on / type xfs (rw,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,relatime,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (ro,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/net_cls type cgroup (ro,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (ro,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/devices type cgroup (ro,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (ro,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (ro,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/cpuset type cgroup (ro,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpuacct,cpu type cgroup (ro,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/blkio type cgroup (ro,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (ro,nosuid,nodev,noexec,relatime,memory)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
/dev/sda2 on /data type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda2 on /etc/resolv.conf type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda2 on /etc/hostname type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda2 on /etc/hosts type xfs (rw,relatime,attr2,inode64,noquota)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
proc on /proc/asound type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/bus type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/fs type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/irq type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/sys type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/sysrq-trigger type proc (ro,nosuid,nodev,noexec,relatime)
tmpfs on /proc/kcore type tmpfs (rw,nosuid,mode=755)
tmpfs on /proc/timer_list type tmpfs (rw,nosuid,mode=755)
tmpfs on /proc/timer_stats type tmpfs (rw,nosuid,mode=755)
tmpfs on /proc/sched_debug type tmpfs (rw,nosuid,mode=755)
提示:虽然我们不知道mount到哪里,但是在却有date目录
root@96892a7bb67e:/# mount |grep data
/dev/sda2 on /data type xfs (rw,relatime,attr2,inode64,noquota)
通过docker inspect来查看mount的情况
[root@linux-node1 ~]# docker inspect -f {{.Mounts}} nginx-volume-demo1
[{f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751 /var/lib/docker/volumes/f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751/_data /data local true }]
我们可以在这个文件下创建一个文件,然后在进容器中进行查看
[root@linux-node1 ~]# cd /var/lib/docker/volumes/f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751/_data
[root@linux-node1 _data]# touch demo.txt
[root@linux-node1 _data]# ls
demo.txt
root@96892a7bb67e:/# cd /data/
root@96892a7bb67e:/data# ls
demo.txt
小结:根据上面的操作,我们可以看出物理机的/var/lib/docker/volumes/f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751/_data目录实际上就是对应到容器中的/data目录。
案例2:我们创建一个容器,起名叫nginx-volume-demo2,指定物理机上/data/docker-volume-nginx目录挂载到容器中的/data目录下
[root@linux-node1 ~]# docker run -d --name nginx-volume-demo2 -v /data/docker-volume-nginx/:/data nginx
8814cf80b424d93624d85044a093de67c67fba8dac1c8e0b832727a43d01fc0b
备注:/data/docker-volume-nginx 物理机存储文件的目录,/data容器中的目录。
我们可以在这个/data/docker-volume-nginx目录下创建一个文件,然后在进容器中/data目录进行查看
[root@linux-node1 _data]# cd /data/docker-volume-nginx
[root@linux-node1 docker-volume-nginx]# touch demo2.txt
[root@linux-node1 docker-volume-nginx]# ls
demo2.txt
[root@linux-node1 ~]# ./docker_in.sh nginx-volume-demo2
root@8814cf80b424:/# cd /data/
root@8814cf80b424:/data# ls
demo2.txt
案例3:只读方式挂载
[root@linux-node1 ~]# docker run -d --name nginx-volume-demo3 -v /data/docker-volume-nginx/:/data:ro nginx
8822c2f37e9e393b5e845b0970c2037c932134568dd43e6460bb057bbb97f834
案例4:文件挂载
docker run --rm -it --name nginx-volume-demo4 -v /root/.bash_history:/.bash_history nginx /bin/bash
数据卷容器
数据卷容器就是可以让一个容器访问另一个容器的卷,不管这个容器是否运行都可以访问到。
数据卷容器简单解释就是:它可以让这个数据在多个容器中共享。
案例1:我们创建一个容器,起名叫volume-demo1,访问另一个容器nginx-volume-demo2的/data目录
[root@linux-node1 ~]# docker run -it --rm --name volume-demo1 --volumes-from nginx-volume-demo2 centos /bin/bash
[root@86c9a83d95be /]# cd /data
[root@86c9a83d95be data]# ls
demo2.txt
- --volumes-from 另一个容器的名称
Docker数据管理(四)的更多相关文章
- AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署
一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...
- Docker系列(四):Docker容器互联
基于Volume的互联 为什么需要Volume docker文件系统是分层的,下面的是全部是只读的,最上面的是可写层,容器中的进程如果修改了某个文件,比如修改了下层的某个文件,其实是在最顶层复制下层文 ...
- 用前端姿势玩docker【四】基于docker快速构建webpack的开发与生产环境
目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...
- Docker实战(四)之Docker数据管理
在生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及到容器的数据管理操作. 容器中管理数据主要有两种形式: 数据卷:容器内数据直接映射到本地主 ...
- docker 实践四:数据管理
这篇是关于 docker 的数据管理. 注:环境为 CentOS7,docker 19.03. 一般容器中管理数据主要有两种方式: 数据卷(Data Volumes):容器内数据直接映射到本地主机环境 ...
- Docker数据管理(五)
一.什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射 ...
- 【Docker】第五篇 Docker 数据管理
一.基本介绍 数据管理的原因:Docker中的容器一旦删除,容器本身的rootfs文件系统就会被删除,容器中的所有数据就会被删除.为了对一些需要持久化的数据,不随容器删除而删除,所以我们可以通过多个容 ...
- Docker数据管理
用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及到Docker的数据管理. 容器中管理数据主要有两种方式: ...
- [docker]docker的四种网络方式
声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! bridge方式(默认) H ...
随机推荐
- JAVA第一次实验 ——实验楼
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1352 姓名:潘俊洋 学号:20135230 成绩: 指导教师:娄嘉鹏 ...
- Task 4.3 求环形数组的最大子数组和
任务要求:输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n- ...
- IO文件的读取,以及写入文件内容
package zxc; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fi ...
- 学术诚信与职业道德——《构建之法》P384~391读后感
程序本身没有伦理和职业道德, 但是程序员和软件企业要有,因为程序员明白伦理道德的存在. 对于刚刚经历被不负责队友抛下的经历,对此很有感触,软件工程师除了遵守任务做事,也要考虑道德上.责任上的事情. 就 ...
- Beta阶段——第三篇 Scrum 冲刺博客
i. 提供当天站立式会议照片一张: ii. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 账单与舍费余额数据库关联,删除功能 (2) 今天计划完成的工作: 账单排序显示 ...
- [转帖]sqlnet.ora常用参数
sqlnet.ora常用参数 注﹕在修改sqlnet.ora文件之后重新启动监听﹐修改才能生效﹗﹗﹗ oracle网络设置主要包括三个文件,sqlnet.ora\ lisnter.ora\ tnsna ...
- response和request的setCharacterEncoding区别
一.request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值. 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定, ...
- vue & button & refs & click & bug
vue & button & refs & click & bug $refs.btn.click() ??? vue & refs $refs.btn.$em ...
- 队列java实现
队列是一种线性数据结构,是一种运算受限的线性表,只允许在队尾插入,在队头删除.运算规则是先进先出.恰好和栈相反.栈是先进后出.因为栈只在栈顶做删除和插入. 队列按照存储结构可以分为顺序队列和链式队列. ...
- Graph And Its Complement CodeForces - 990D(思维构造)
题意: 图中有n个点,开始有a个连通块,然后连着的边断开,不连的边连上,变为b个连通块,输出原图的邻接矩阵. 解析: 原图中连通块大于1的图,经过上述操作后,一定变成只有1个连通块的图. 若n != ...