Docker数据管理(四)

Docker数据管理

Docker数据分为两种:

数据卷

  • -v /data
  • -v src:dst

数据卷容器

  • --volumes-from

数据卷

案例1:我们创建一个容器,起名叫nginx-volume-demo1挂载到容器中的/data目录下

[[email protected] ~]# docker run -d --name nginx-volume-demo1 -v /data nginx
96892a7bb67e9c687f29d07ea674ca527ab09dee6b0ec1217bd5aebf328d8f44

进入容器,目录下已经有我们data目录

[[email protected] ~]# ./docker_in.sh nginx-volume-demo1
[email protected]:/# ls /
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

查看当前挂载目录

[email protected]:/# 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目录

[email protected]:/# mount |grep data
/dev/sda2 on /data type xfs (rw,relatime,attr2,inode64,noquota)

通过docker inspect来查看mount的情况

[[email protected] ~]# docker inspect -f {{.Mounts}} nginx-volume-demo1
[{f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751 /var/lib/docker/volumes/f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751/_data /data local  true }]

我们可以在这个文件下创建一个文件,然后在进容器中进行查看

[[email protected] ~]# cd /var/lib/docker/volumes/f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751/_data
[[email protected] _data]# touch demo.txt
[[email protected] _data]# ls
demo.txt
[email protected]:/# cd /data/
[email protected]:/data# ls
demo.txt

小结:根据上面的操作,我们可以看出物理机的/var/lib/docker/volumes/f3aa312c4981a6653d1ca75b4df8b76459622dee6b798077a8b350b4d8e73751/_data目录实际上就是对应到容器中的/data目录。

案例2:我们创建一个容器,起名叫nginx-volume-demo2,指定物理机上/data/docker-volume-nginx目录挂载到容器中的/data目录下

[[email protected] ~]# 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目录进行查看

[[email protected] _data]# cd /data/docker-volume-nginx
[[email protected] docker-volume-nginx]# touch demo2.txt
[[email protected] docker-volume-nginx]# ls
demo2.txt
[[email protected] ~]# ./docker_in.sh nginx-volume-demo2
[email protected]:/# cd /data/
[email protected]:/data# ls
demo2.txt

案例3:只读方式挂载

[[email protected] ~]# 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目录

[[email protected] ~]# docker run -it --rm --name volume-demo1 --volumes-from nginx-volume-demo2 centos /bin/bash
[[email protected] /]# cd /data
[[email protected] data]# ls
demo2.txt
  • --volumes-from 另一个容器的名称
时间: 2024-10-13 00:16:30

Docker数据管理(四)的相关文章

Docker 数据管理

Docker 数据管理 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 1.  数据卷可以在容器之间共享和重用 2.  对数据卷的修改会立马生效 3.  对数据卷的更新,不会影响镜像 4.  卷会一直存在,直到没有容器使用 挂载本地目录到容器 创建一个数据卷 在用 docker run 命令的时候,使用 -v 标记来创建一个数据卷并挂载到容器里.在一次 run 中多次使用可以挂载多个数据卷. #sudo docker run -it -v ~/da

深入浅出Docker(四):Docker的集成测试部署之道

1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方式,给开发团队建立一套可以复用的开发环境,让开发环境可以通过Image的形式分享给项目的所有开发成员,以简化开发环境的搭建.但是,在没有Docker技术之前就已经有类如Vagrant的开发环境分发技术,软件开发者一样可以创建类似需求的环境配置流程.所以在开发环境方面,Docker技术的优势并不能很好

Docker数据管理及网络通信

Docker数据管理及网络通信 在Docker中,为了方便查看容器中产生的数据或者将多个容器中的数据共享,就涉及到容器的数据管理操作.管理Docker容器中的数据主要有两种方式:数据卷(Date Volumes)和数据卷容器(Data Volumes Containers). 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机和容器之间迁移.数据卷的使用类似于Linux下对目录进行的mo

Docker数据管理、网络通信以及资源控制

Docker的安装及镜像.容器的基本操作详见博客http://blog.51cto.com/11134648/2160257下面介绍Docker数据管理.网络通信以及资源控制的方法,详细如下: Doker数据管理 容器的数据管理操作可以方便查看容器内产生的数据或者将多个容器中的数据实现共享.管理Docker容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(Data Volumes Containers). 一.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主

(九)Docker数据管理

Docker数据管理,即Docker内部以及容器之间管理数据,主要有两种方式:数据卷和挂载. 1. 数据卷(Volume) volume,可供一个或多个容器使用的特殊目录. 数据卷可在容器之间共享和重用: 对数据卷的修改会立马生效: 对数据卷的更新,不会影响镜像: 数据卷默认会一直存在,即使容器被删除:(可通过 docker volume prune命令删除无效的volume) 数据卷的使用,类似于 2. 挂载主机目录(Bind mounts) 原文地址:https://www.cnblogs.

Docker 数据管理和网络通信

Docker 数据管理 在Docker中,为了方便查看容器内产生的数据或者将多个容器中的数据实现共享,就涉及到容器的数据管理操作.管理Docker容器中数据只要有两种方式:数据卷(Data Volumes)和数据卷容器(Data Volumes Containers) 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移. 1.创建数据卷 在docker run命令中使用-

docker 实践四:数据管理

这篇是关于 docker 的数据管理. 注:环境为 CentOS7,docker 19.03. 一般容器中管理数据主要有两种方式: 数据卷(Data Volumes):容器内数据直接映射到本地主机环境. 数据卷容器(Data Volume Containers):使用特定容器维护数据卷. 主要来介绍如何创建数据卷,并且把本地的目录挂载到容器内,使用数据卷容器在容器和主机之间共享数据,并实现数据的备份和恢复. 数据卷 首先我们先来介绍下什么是数据卷:数据卷(Data Volume)是一个可供容器使

Docker数据管理与网络通信

Docker镜像的创建方法 Docker镜像除了是Docker的核心技术之外也是应用发布的标准格式.一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的就是在容器中安装应用服务,如果要把已经 安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的方法有三种: 基于已有镜像创建 基于本地模板创建 基于Docherfile创建 基于已有镜像创建 使用docker commit命令,

Docker数据管理(五)

一.什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射到本地主机环境 数据卷容器:使用特定的容器来维护数据卷 数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似Linux 的mount挂载 数据卷的特性 数据卷可以在容器之间共享和重用,容器间传递数据将变得高效方便 对数据卷内数据的修改立马生效,无论是容器内还是本地操作 对数据