• 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 另一个容器的名称
  • 相关阅读:
    c中NULL,'\0'和0之间的区别. (the difference between NULL,'\0' and 0 in c)
    python 解析xml文件python parse xml.
    mysql升级 ,MySQL Error: #1558 Column count of mysql.proc is wrong. Expected 20, found 16.
    文献随笔15
    文献笔记11
    文献笔记16
    文献笔记13
    文献笔记17
    文献笔记20
    文献笔记19
  • 原文地址:https://www.cnblogs.com/shhnwangjian/p/6294793.html
Copyright © 2020-2023  润新知