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