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 ...
随机推荐
- 提不起劲想赶紧完工 Scrum Meeting 博客汇总
提不起劲想赶紧完工 Scrum Meeting 博客汇总 一.Alpha阶段 1,第一次Scrum Meeting 2,第二次Scrum Meeting 3,第三次Scrum Meeting 4,第四 ...
- 项目Beta冲刺(团队)第七天
1.昨天的困难 服务器部署出了问题,本地服务器差点崩掉 运行一直闪退,在查找哪里出现问题的路上一去不复返 2.今天解决的进度 成员 进度 陈家权 消息功能模块 赖晓连 问答功能模块 雷晶 部署服务器到 ...
- BNUOJ 52318 Be Friends prim+Trie
题目链接: https://acm.bnu.edu.cn/v3/problem_show.php?pid=52318 B. Be Friends Case Time Limit: 2500msMemo ...
- eg_6
问题描述: 将一句话的单词进行倒置,标点不倒置.比如 I like beijing. 经过函数后变为:beijing. like I Demo1: import java.util.Scanner; ...
- Scrum项目6.0 和8910章读后感
Scrum项目6.0总结 这次sprint1通过我们的努力,终于把自动回复做出来了.但之后的任务更加繁重,我们要更加努力,克服各种困难. 也要说说这次自动回复里面的注意之处: 1.不该空格的地方空格, ...
- (二)Jmeter各部件的作用
JMeter主要组件介绍 1.测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器. 2.线程组(Thread Group)代表一定数量的并发用户 ...
- javascript 容易忘记方法集锦
定义和用法 1.split() 方法用于把一个字符串分割成字符串数组. 提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间 ...
- pygame入门
pygame入门 说明 在学习pygame时,主要参考了目光博客的教程.目光博客 原教程是2011年写的,年代比较久远了,使用Python2.我学习时使用python3将代码重新实现了一遍,同时补充了 ...
- Java并发编程之线程创建和启动(Thread、Runnable、Callable和Future)
这一系列的文章暂不涉及Java多线程开发中的底层原理以及JMM.JVM部分的解析(将另文总结),主要关注实际编码中Java并发编程的核心知识点和应知应会部分. 说在前面,Java并发编程的实质,是线程 ...
- python & dict & switch
python & dict & switch python 中是没用switch语句的,这应该是体现python大道至简的思想,python中一般多用字典来代替switch来实现. # ...