牛刀小试之docker容器系列(六)

牛刀小试之docker数据卷容器共享

牛刀小试之docker容器系列(六)

牛刀小试之docker数据卷容器共享

重点思想:

数据卷可以在容器之间共享和重用  
对数据卷的修改会立马生效  
对数据卷的更新不会影响镜像  
卷会一直存在,直到没有容器使用  

语法操作:

1.数据卷的使用,类似linux下面的mount操作。
在docker run 启动的时候 可以加-v参数来创建一个容器卷。注意多次创建可以使用-v标记多个数据卷。

[root@docker ~]# docker run -d -P --name web -v /webapp training/webapp echo "hello world"
d7a7b8a6e1a6f21828833ca3fc32fa15110704830ff5d19962728d0e269732b8

2.本地硬盘挂载
[root@docker ~]# docker run -d -P --name web -v /srv/webapp:/opt/webapp/ training/webapp echo "hello world"
b9136b0dbe333ac0bbdae76925db6de4cf272433ec92cf65fd17660bd59f0c19
[root@docker ~]#
3.本地硬盘挂载一个只读的 -ro参数
[root@docker ~]# docker run -d -P --name web -v /srv/webapp:/opt/webapp/:ro training/webapp echo "hello test"
252a677db3a2cfe679c11983b1a27934820a31746ba0cdb49e6c6105cf80623e
[root@docker ~]#

4.挂载一个本地主机文件作为数据卷,建议一般不要挂载一个文件
[root@docker ~]# docker run --rm -it -v ~/.bash_history:/.bash_history centos:6 /bin/bash
[root@a5570545c53f /]#

实战案例: 数据卷容器

场景:
    如果用户需要在容器之间共享一些持续更新的数据,最简单的办法就是使用数据卷容器。数据卷容器就是一个普通的容器。专门用它提供数据卷供其他容器挂载使用。
优点:
   使用数据卷容器可以让用户在容器之间自由的升级和移动数据卷。

1.创建
[root@docker ~]# mkdir /dbdata
[root@docker ~]# docker run -it -v /dbdata/ --name dbdata centos:6
[root@96513f616aa4 /]# ls
bin  dbdata  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var
[root@96513f616aa4 /]#

[root@docker ~]# docker run -it --volumes-from dbdata --name db1 centos:6
[root@98a6cca3fee3 /]# exit
[root@docker ~]# docker run -it --volumes-from dbdata --name db2 centos:6
[root@a85c2ed8df59 /]# exit
[root@docker ~]#

2.启动容器
docker start  96513f616aa4  98a6cca3fee3  a85c2ed8df59

3.查看
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a85c2ed8df59        centos:6            "/bin/bash"         9 minutes ago       Up 12 seconds                           db2
98a6cca3fee3        centos:6            "/bin/bash"         10 minutes ago      Up About a minute                       db1
96513f616aa4        centos:6            "/bin/bash"         11 minutes ago      Up 47 seconds                           dbdata
[root@docker ~]#


4.使用docker-enter 登陆到db1 在dbdata下面创建一个目录uptime
[root@docker ~]# docker-enter 98a6cca3fee3
[root@98a6cca3fee3 /]# cd dbdata/
[root@98a6cca3fee3 dbdata]# ls
[root@98a6cca3fee3 dbdata]# mkdir uptime
[root@98a6cca3fee3 dbdata]# exit

5.在其他两台机器查看
[root@docker ~]# docker-enter 96513f616aa4
[root@96513f616aa4 /]# cd dbdata/
[root@96513f616aa4 dbdata]# ls
uptime
[root@96513f616aa4 dbdata]#

[root@docker ~]# docker-enter a85c2ed8df59
[root@a85c2ed8df59 /]# ll /dbdata/
total 4
drwxr-xr-x 2 root root 4096 Apr  2 09:39 uptime
[root@a85c2ed8df59 /]#
docker 

See also