docker 数据管理


1、挂载本地的目录到容器里


[root@localhost ~]# docker run -itd -v /data/:/data/ --name centos centos bash
4d5b368379e7733b7ec20c026c1d480698f8dea4fb2d0c9ebfa1c8b5ac9d5936
### -v 用来指定挂载目录,  :  前面的/data/为宿主机本地目录,: 后面的为容器里的目录,会在容器中自动创建。
--name 指定容器的名字,不指定的话会随机一个,如下文的 NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4d5b368379e7        centos              "bash"                   35 seconds ago      Up 33 seconds                                centos
be56cb15e2c7        registry:latest     "/entrypoint.sh /etc…"   4 hours ago         Up 4 hours          0.0.0.0:5000->5000/tcp   registry

2、挂载数据卷
就是把另一个容器挂载的刚刚创建的挂载本地目录的容器上。就是新建一个容器,并且使用上一个容器的数据卷。

[root@localhost ~]# docker run -itd --volumes-from centos centos bash
eebbb27a182e88e5a428ca4818889c2bba4275ab9900d9cc1340457d44f60837

查询容器详情信息

[root@localhost ~]# docker inspect eebbb27a182e
[{"Id": "eebbb27a182e88e5a428ca4818889c2bba4275ab9900d9cc1340457d44f60837","Created": "2020-11-06T21:37:51.662626023Z","Path": "bash","Args": [],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 35115,"ExitCode": 0,"Error": "","StartedAt": "2020-11-06T21:37:52.20839083Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55","ResolvConfPath": "/var/lib/docker/containers/eebbb27a182e88e5a428ca4818889c2bba4275ab9900d9cc1340457d44f60837/resolv.conf","HostnamePath": "/var/lib/docker/containers/eebbb27a182e88e5a428ca4818889c2bba4275ab9900d9cc1340457d44f60837/hostname","HostsPath": "/var/lib/docker/containers/eebbb27a182e88e5a428ca4818889c2bba4275ab9900d9cc1340457d44f60837/hosts","LogPath": "/var/lib/docker/containers/eebbb27a182e88e5a428ca4818889c2bba4275ab9900d9cc1340457d44f60837/eebbb27a182e88e5a428ca4818889c2bba4275ab9900d9cc1340457d44f60837-json.log","Name": "/upbeat_wescoff","RestartCount": 0,"Driver": "devicemapper","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {"Binds": null,"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "default","PortBindings": {},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": ["centos"],"CapAdd": null,"CapDrop": null,"Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "shareable","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": null,"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "runc","ConsoleSize": [0,0],"Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": null,"BlkioDeviceWriteBps": null,"BlkioDeviceReadIOps": null,"BlkioDeviceWriteIOps": null,"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DiskQuota": 0,"KernelMemory": 0,"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": false,"PidsLimit": 0,"Ulimits": null,"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"DeviceId": "32","DeviceName": "docker-253:0-3666754-ec37fcd1a0f096b63ba7eef5f3e7441763b1ef3ab6815a9f37988b0df0f45d81","DeviceSize": "10737418240"},"Name": "devicemapper"},**"Mounts": [{"Type": "bind","Source": "/data","Destination": "/data","Mode": "","RW": true,"Propagation": "rprivate"**} ],"Config": {"Hostname": "eebbb27a182e","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": true,"OpenStdin": true,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["bash"],"Image": "centos","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"org.label-schema.build-date": "20201204","org.label-schema.license": "GPLv2","org.label-schema.name": "CentOS Base Image","org.label-schema.schema-version": "1.0","org.label-schema.vendor": "CentOS"}},"NetworkSettings": {"Bridge": "","SandboxID": "26d9a8c1c014106f9ef4935a15d528524d30bb6bc236caecb74d9d8a1d32f187","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {},"SandboxKey": "/var/run/docker/netns/26d9a8c1c014","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "11b4bbba08def7e06da0ce42db315acfd1f33332b6ab0222ab01eb7092116c13","Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.4","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:11:00:04","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "793e77d072ed2f4d8eefcc5927d10669247c16bb706a6de8807e7eccfa224998","EndpointID": "11b4bbba08def7e06da0ce42db315acfd1f33332b6ab0222ab01eb7092116c13","Gateway": "172.17.0.1","IPAddress": "172.17.0.4","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:04","DriverOpts": null}}}}
]
[root@localhost ~]# docker inspect -f{{.Mounts}} eebbb27a182e
[{bind  /data /data   true rprivate}]

2、定义数据卷容器


需要多个容器之间共享数据,就要搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷
方法一、
首先创建一个数据卷容器,再把其他容器挂载该数据卷

[root@localhost ~]# docker run -itd -v /data/ --name testvol centos bash
5f083acc9671a7943c6bc8397a9f04910ce147b8acf6a65f5a3df7e06ae901ae
[root@localhost ~]# docker run -itd --volumes-from testvol centos bash
306c3a4f7f5bb78136fe887cb23b0c1406f11a1eaa75d73c37d07f10166026fd

可以查看一下

[root@localhost ~]# docker volume ls
DRIVER              VOLUME NAME
local               8eef3696a7200b4b12147531b2eaccecfaac09c83fc7728ef301d3b0ff606f04
local               020bc38f1d7b23a9980b15f3d71c987e259e3485f68626e3db62fabd88dac53a

方法二、
首先,创建一个数据卷,再挂载rongqi

[root@localhost ~]# docker volume create aaa
aaa
[root@localhost ~]# docker volume ls
DRIVER              VOLUME NAME
local               8eef3696a7200b4b12147531b2eaccecfaac09c83fc7728ef301d3b0ff606f04
local               020bc38f1d7b23a9980b15f3d71c987e259e3485f68626e3db62fabd88dac53a
local               aaa
[root@localhost ~]# docker run -itd -v aaa:/data --name aaa centos bash
ad720ce49c8034340034ded3feacfb48830e40528b06c868f48e344ef1032d29
[root@localhost ~]# docker volume ls
DRIVER              VOLUME NAME
local               8eef3696a7200b4b12147531b2eaccecfaac09c83fc7728ef301d3b0ff606f04
local               020bc38f1d7b23a9980b15f3d71c987e259e3485f68626e3db62fabd88dac53a
local               aaa

3、数据卷的备份


首先,创建一个共享目录,
然后,把这个目录挂载到容器里,并且这个容器使用之前创建的数据卷容器,再不进入容器执行压缩命令。
最后,查看一下挂载的目录,有压缩包
(就是说,在容器里/backup目录压缩的包,备份到了宿主机里的/data/backup目录里)

[root@localhost ~]# mkdir /data/backup
[root@localhost ~]# docker run --volumes-from testvol -v /data/backup/:/backup centos tar cvf /backup/data.tar /data
tar: Removing leading `/' from member names
/data/
[root@localhost ~]# ll /data/backup
total 12
-rw-r--r--. 1 root root 10240 Nov  7 06:32 data.tar

4、数据卷的恢复


首先,一定要重新新建一个数据卷容器
然后,在新建一个新的容器并挂载该数据卷容器,再把tar包解压

[root@localhost ~]# docker run -itd -v /data/ --name testvol2 centos bash
56e7803f89546f12c370721a15d770311c62bbe88723db526ccf16a74838f5c7
[root@localhost ~]# docker run --volumes-from testvol2 -v /data/backup/:/backup centos tar xf /backup/data.tar

最后补充



Docker数据管理相关推荐

  1. Docker学习五:Docker 数据管理

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  2. Docker学习三:Docker 数据管理

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  3. Docker数据管理 Named volume

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Dock ...

  4. 6、docker 数据管理

    很早之前看的文章,进行了简单的排版整理,找不到源地址了,如有侵权,请联系删除. 1.数据卷(docker volume) 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用 ...

  5. CHAPTER 5 Docker数据管理

    docker 数据管理 5.1 数据卷 5.1.1 创建数据卷 5.1.2 绑定数据卷(`--mount`) 5.2 数据卷容器 5.3 利用数据卷容器来迁移数据 在生产环境中使用Docker,往往需 ...

  6. Docker 入门系列(4)- Docker 数据管理(挂载目录、挂载文件、数据卷挂载、数据卷共享、数据卷删除、数据卷容器备份和恢复)

    基于底层存储实现,Docker 提供了三种适用于不同场景的文件系统挂载方式:Bind Mount.Volume 和 Tmpfs Mount. Bind Mount 能够直接将宿主操作系统中的目录和文件 ...

  7. Docker基础-Docker数据管理

    1.数据卷 数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount操作. 数据卷可以提供很多有用的特性: 1.数据卷可以在容器之间共享和重用,容器间传递 ...

  8. Docker 数据管理介绍

    默认容器的数据是保存在容器的可读写层,当容器被删除时其上的数据也会丢失,所以为了实现数据的持久性则需要选择一种数据持久技术来保存数据.官方提供了三种存储方式:Volumes.Bind mounts和t ...

  9. docker数据管理与网络通信

    一.管理docker容器中数据 管理Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器( DataVolumes Containers) . 1. 数据卷 数据卷是 ...

  10. 【云原生 | 10】Docker数据管理

最新文章

  1. 如何管理 vue 项目中的数据?
  2. 东华计算机学院常珊,常姗 - 东华大学 - 计算机科学与技术学院
  3. InfoPath发布要点
  4. 不要“个人英雄主义”,物联网安全共同体更稳固
  5. CFA将人工智能列入考试内容折射啥
  6. 搞定月薪30K的AI热门领域,这份书单请收好
  7. FreeRTOS调度器挂起与解除
  8. 将任意图像转成 HTML5 Canvas
  9. OpenShift 4 之Kafka(2)-配置Kafka Bridge,通过HTTP访问Kafka Topic
  10. windows 10 安装 spark 环境(spark 2.2.1 + hadoop2.7)
  11. Win7 局域网内简单共享的设置
  12. 17 类的成员 私有
  13. mysql hsqldb_HSQLDB的使用方法
  14. matlab 积分后带int,matlab int 积分
  15. linux ubuntu 安装odb,Ubuntu 使用C++ ORM框架--ODB
  16. Revel框架快速入门教程
  17. 5.5 除法的运算过程
  18. Speed as a Habit(让速度成为一种习惯)
  19. Occlusion Culling(遮挡剔除)
  20. Java byte[]与short[]之间转换

热门文章

  1. JavaScript高级程序设计学习笔记(一)
  2. access 数据库入门
  3. Perl语言程序设计_简介
  4. Unicode 字符编码
  5. 网页完美内嵌多媒体,支持IE,Mozilla、Firefox、NetScape、Opera
  6. 成功解决不能完成“视频帧到图层”的命令,因为需要QuickTime7.1或者更高版本
  7. VS2013 Qt Unable to find a Qt Build 及 LINK1112错误
  8. win10下python跑科大讯飞语音唤醒
  9. 扫雷android源代码,Android实现扫雷小游戏
  10. 幼儿园管理系统源码【免费分享】