docker容器数据卷
目录
1. docker容器数据卷作用
docker当把容器删除后,那么该容器中的数据就会丢失,前面可以使用命令 docker cp命令,将数据复制到宿主机中,当时这不是长久之道,容器数据卷的作用就好比好比redis的aof等,用于数据持久化,以及用于容器间的数据共享等作用
2. 添加数据卷的两种方式
2.1 使用命令添加
2.1.1 命令
docker run -it -v 宿主机目录:容器中目录 镜像名
以centeros7为例,docker run -it -v /usr/lonely:/usr/lonely centos
使用该命令,可以在容器中创建 /usr/lonely 目录,与宿主机的 /usr/lonely绑定,实现数据共享
2.1.2 如何查看是否实现绑定(挂载)
可以在宿主机中,使用以下命令
docker inspect 容器id
在展示的信息中,可以明显的看到挂在bing,并且可以看到权限是 RW:true,表示可读写
2.1.3 当容器退出后,修改宿主机,再次启动容器后会实现同步吗?
这个可以先退出容器后,在绑定目录修改或者新建文件,然后再次进入容器,查看是否同步,经过测试,发现结果如下:
即使容器退出,修改宿主机后,再次登入会显示最新同步后的数据信息,即会实现同步
2.1.4 如何实现权限控制
正常通过以上命令进行添加数据卷,默认权限是 RW:true,即可读写,可以使用以下命令,可以容器数据卷只可以读,即read only
docker run -it -v 宿主机目录:容器中目录:ro 镜像名
ro:表示 read only , 配置后可以在容器中挂载目录下添加文件试试,会提示该目录为只读。
2.2 使用DockerFile添加
2.2.1 操作步骤
-
在宿主机上新建一个目录
mkdir mydockerfile
在宿主机上
-
进入目录,新建Dockfile文件,并编辑它
cd mydockerfile vim Dockfile
Dockfile文件内容如下:
FROM centos VOLUME ["/test_dockfile_container"] CMD echo "lonely --success" CMD "/bin/bash"
保存退出
-
使用命令docker build 打包构建新镜像
docker build -f dockerfile文件目录 -t 镜像名以及版本号 . 最后面有一个 . 表示在当前目录下,用法例如: docker build -f /mydockerfile/Dockerfile -t lonely/mydockerfile .
-f :表示Dockfile文件目录
-t:表示镜像名以及版本号
最后的 . :表示使用当前目录的Dockfile文件进行构建
-
构建完成后,使用 docker images 查看刚刚生成的镜像
2.2.2 验证是否构建成功
-
运行刚刚创建的镜像
docker run -it 镜像名
-
进入容器后,查看是否存在Dockerfile文件中的 VOLUME对应的文件夹
-
那么对应宿主机目录上那个呢?
- 进入宿主机中,使用命令 docker inspect 查看绑定的 宿主机目录
- 去查看生成的宿主机挂载目录中 添加一个文件来测试是否挂载成功