Docker 容器数据卷
Docker 理念:
- 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但由于对数据要求希望是持久化的
- 容器之间希望可以共享数据
一、Docker 容器数据卷是什么?
- docker 容器产生的数据,如果不通过 docker commit 生成新的镜像,使数据做为镜像的一部分保存下来,那么删除容器之后,数据也随之被删除。为了能保存数据在 docker 中,我们使用容器卷。
- 好比从电脑(docker)中拷贝数据(使用的 U 盘-容器卷)
二、Docker 容器数据卷能干什么?
- 数据的持久化
- 容器间继承+共享数据
特点:
- 容器之间共享过重用数据
- 卷中更改可之间生效
- 数据卷中的更改不会在镜像的更新中
- 数据中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用止
三、Docker 容器数据卷
容器内添加:
1 |
docker run -it -v /[宿主机绝对路径目录]:[/容器内目录] [container_ID] |
权限报错处理:
1 |
docker run -it -v /myDataVolume:/dataVolumeContainer --privileged=true [镜像名] |
检测是否数据卷是否挂载成功
1 |
docker inspect |
容器停止后,主机修改后数据是否同步 可以!但需为同一个容器!!![The same container_id]
1 |
ps -l 查看运行过的容器信息 |
命令(带权限):容器中只读,不可修改 docker run -it -v /宿主机绝对路径:/容器内目录:ro 镜像名
dockerfile 添加
javaEE:hello.java —-> hello.class Docker: images ===》 DockerFile
- 新建 mydocker 文件夹并进入
- 在 dockerfile 中使用 volume 指令来给镜像添加一个或多个数据卷
- volume[“/dataVolumeContainer”,”/dataVolumeContainer2”,”/dataVolumeContainer3”]
-
File 构建
1
2
3
4
5# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContaine2"]
CMD echo "finished,----sucess1"
CMD /bin/bash -
build 后生成镜像
1
2
3
4docker build -f /路径/文件名 -t 容器名:TAG .
-f: file-->指定为文件
-t:为容器重新分配一个为输入终端;
. : 分布执行file中命令
四、Docker 容器数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器称之为数据卷容器 容器间传递共享(volumes-from)
dc01(主) 删除后 dc02(子 1) dc03(子 2)不受影响,dc02 与 dc3 继续传输
结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用为止