标签:repr 管理 hostname log status rac res type and
持久保存container中的数据除了named volume还可以使用data volume container, 为了方便本文统一称为data container.
没有volume等存在
[root@liumiao volumes]# pwd
/var/lib/docker/volumes
[root@liumiao volumes]# docker volume ls
DRIVER VOLUME NAME
[root@liumiao volumes]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@liumiao volumes]#
[root@liumiao volumes]# docker create -v /datainf --name datacontainer debian /bin/true
ec96e7a392631b61cfc902f1e5457d0f432741a439ea756e594a24c6f0c3db74
[root@liumiao volumes]#
是不是觉得非常熟悉,使用docker run -v创建以及docker volume create的时候如果不指定name,系统自动会生成的一个volume名称和刚刚创建的非常像,让我们来看一下到底发生了什么。
[root@liumiao ~]# docker volume ls
DRIVER VOLUME NAME
local aa31ef55b196dc13a120496dae2be903c37f256d3a200a3741167253b1495c1f
[root@liumiao ~]#
确认之后,没有一丝惊喜,这个不是,应该是和普通container类似,返回的container的Id,确认一下,果然如此
[root@liumiao ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec96e7a39263 debian "/bin/true" 7 minutes ago Created datacontainer
[root@liumiao ~]# docker inspect ec96e7a39263 |grep Id
"Id": "ec96e7a392631b61cfc902f1e5457d0f432741a439ea756e594a24c6f0c3db74",
"DeviceId": "457",
[root@liumiao ~]#
用来存放数据的volume是不是和我们不指定名字产生的volume是一样的呢,确认之后发现,确实如此。缺省此volume在/var/lib/docker/volumes下被生成。
[root@liumiao volumes]# pwd
/var/lib/docker/volumes
[root@liumiao volumes]# ll
total 0
drwxr-xr-x. 3 root root 18 Jul 26 07:53 aa31ef55b196dc13a120496dae2be903c37f256d3a200a3741167253b1495c1f
[root@liumiao volumes]#
注意要点:data container和普通的container的区别在哪里呢。主要有如下两点。
路人甲使用他的centos按照如下的方式与data container进行了连接。
[root@liumiao volumes]# docker run -it --volumes-from datacontainer --name centoscontainer centos /bin/bash
[root@57e8263a3d1e /]#
进入之后,发现了创建data container时候使用的datainf目录,果断进入,初始状态,什么信息都没有。
[root@57e8263a3d1e /]# ls
anaconda-post.log bin datainf dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@57e8263a3d1e /]# cd datainf
[root@57e8263a3d1e datainf]# ls
[root@57e8263a3d1e datainf]#
在主机中,此时也进行确认,发现也是没有任何信息的状态。
[root@liumiao volumes]# pwd
/var/lib/docker/volumes
[root@liumiao volumes]# find . -type f
[root@liumiao volumes]#
确认一下此时活动着的container,确实只有路人甲(centoscontainer)
[root@liumiao volumes]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57e8263a3d1e centos "/bin/bash" 3 minutes ago Up 3 minutes centoscontainer
[root@liumiao volumes]#
[root@57e8263a3d1e datainf]# ls
[root@57e8263a3d1e datainf]# echo "hello, this is `hostname`" >>helloworld
[root@57e8263a3d1e datainf]# ls
helloworld
[root@57e8263a3d1e datainf]# cat helloworld
hello, this is 57e8263a3d1e
[root@57e8263a3d1e datainf]#
[root@liumiao volumes]# pwd
/var/lib/docker/volumes
[root@liumiao volumes]# find . -type f
./aa31ef55b196dc13a120496dae2be903c37f256d3a200a3741167253b1495c1f/_data/helloworld
[root@liumiao volumes]# cat ./aa31ef55b196dc13a120496dae2be903c37f256d3a200a3741167253b1495c1f/_data/helloworld
hello, this is 57e8263a3d1e
[root@liumiao volumes]#
[root@liumiao ~]# docker run -it --volumes-from datacontainer --name ubuntucontainer ubuntu /bin/bash
root@a3cefc373b4a:/#
路人乙看到了甲的message
root@a3cefc373b4a:/# ls
bin boot datainf dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@a3cefc373b4a:/# cd datainf
root@a3cefc373b4a:/datainf# find . -type f
./helloworld
root@a3cefc373b4a:/datainf# cat ./helloworld
hello, this is 57e8263a3d1e
root@a3cefc373b4a:/datainf#
路人乙决定对甲say hello
root@a3cefc373b4a:/datainf# cat helloworld
hello, this is 57e8263a3d1e
root@a3cefc373b4a:/datainf# echo "hello, this is `hostname`" >>helloworld
root@a3cefc373b4a:/datainf# cat helloworld
hello, this is 57e8263a3d1e
hello, this is a3cefc373b4a
root@a3cefc373b4a:/datainf#
[root@liumiao volumes]# pwd
/var/lib/docker/volumes
[root@liumiao volumes]# find . -type f
./aa31ef55b196dc13a120496dae2be903c37f256d3a200a3741167253b1495c1f/_data/helloworld
[root@liumiao volumes]# cat ./aa31ef55b196dc13a120496dae2be903c37f256d3a200a3741167253b1495c1f/_data/helloworld
hello, this is 57e8263a3d1e
hello, this is a3cefc373b4a
[root@liumiao volumes]#
[root@57e8263a3d1e datainf]# pwd
/datainf
[root@57e8263a3d1e datainf]# ls
helloworld
[root@57e8263a3d1e datainf]# cat helloworld
hello, this is 57e8263a3d1e
hello, this is a3cefc373b4a
[root@57e8263a3d1e datainf]#
宿主机向两个都发出了一条message,表示他也要加入say hello活动中。
[root@liumiao _data]# pwd
/var/lib/docker/volumes/aa31ef55b196dc13a120496dae2be903c37f256d3a200a3741167253b1495c1f/_data
[root@liumiao _data]# cat helloworld
hello, this is 57e8263a3d1e
hello, this is a3cefc373b4a
[root@liumiao _data]# echo "hello, this is `hostname`" >>helloworld
[root@liumiao _data]# cat helloworld
hello, this is 57e8263a3d1e
hello, this is a3cefc373b4a
hello, this is liumiao
[root@liumiao _data]#
两个container都看到了
[root@57e8263a3d1e datainf]# pwd
/datainf
[root@57e8263a3d1e datainf]# cat helloworld
hello, this is 57e8263a3d1e
hello, this is a3cefc373b4a
hello, this is liumiao
[root@57e8263a3d1e datainf]#
root@a3cefc373b4a:/datainf# pwd
/datainf
root@a3cefc373b4a:/datainf# cat helloworld
hello, this is 57e8263a3d1e
hello, this is a3cefc373b4a
hello, this is liumiao
root@a3cefc373b4a:/datainf#
为了介绍data container和volume的本质所以用了比较极端的方式。在实际的设计中,多个container共用一个数据卷有可能会导致数据损坏。同时宿主机虽然能够看到数据,但是直接从宿主机修改该数据绝对不是Best Practice.
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
标签:repr 管理 hostname log status rac res type and
原文地址:https://www.cnblogs.com/firsttry/p/10294256.html