Docker数据管理

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

最后补充


在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值