实验3:配置Docker容器数据卷
实验3:配置Docker容器数据卷【实验内容】本实验介绍如何挂载本地的目录到容器中,并设置读写规则,以及容器卷的继承。【实验目的】1、掌握容器数据卷的挂载2、熟悉容器卷ro和rw读写规则3、掌握卷之间的继承【实验步骤】步骤1 容器与宿主机互通互联步骤2 容器卷ro和rw读写规则步骤3 容器卷之间的继承步骤1 容器与宿主机互通互联直接命令添加,格式如下:docker run -it -v /宿主机目录:/容器内目录 ubuntu /bin/bash实例如下:l 将容器内目录/tmp/myDockerData映射到宿主机/tmp/myHostData目录docker run -it -name u1 -privileged=true -v /tmp/myHostData:/tmp/myDockerData ubuntu /bin/bashØ 目录不存在的情况下会自动创建,分别在宿主机和容器中查看挂载目录,可以看到目录已经创建出来。Ø Docker挂载主机目录访问如果出现cannot open directory .: Permission denied,在挂载目录后多加一个-privileged=true参数即可;如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了;如果要开启,我们一般使用-privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。l 查看数据卷是否挂载成功docker inspect 容器IDl 容器和宿主机之间数据共享修改docker挂载目录内容,查看主机目录变化;修改主机挂载目录内容,查看容器目录变化。步骤2 容器卷ro和rw读写规则(1) 读写格式如下:docker run -it -privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名rw = read + write,默认就是rw。实例如下:docker run -it -privileged=true -v /mydokcer/u:/tmp:rw ubuntu(2) 只读容器实例内部被限制,只能读取不能写。/容器目录:ro 镜像名,就能完成功能,此时容器自己只能读取不能写。实例如下:docker run -it -privileged=true -v /mydokcer/u:/tmp:ro ubuntu ro = read only,此时如果宿主机写入内容,可以同步给容器内,容器可以读取到。步骤3 容器卷之间的继承(1) 容器1完成和宿主机的映射docker run -it -privileged=true -v /mydocker/u:/tmp -name u1 ubuntu创建文件u1_data.txtcd /tmptouch u1_data.txt(2) 容器2继承容器1的卷规则docker run -it -privileged=true -volumes-from u1 -name u2 ubuntu