1、docker镜像原理
docker镜像是什么 :
镜像是一种轻量级的、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含某种软件所需要的所有内容,包括代码、运行时库、运行时环境变量、和配置文件。
它的实质就是UnionFS(联合文件系统),
docker镜像加载原理:
为什么一个Tomcat镜像那么大?:
命令补充:
docker commit 提交容器副本 使之成为一个新的镜像
docker run -it -p 8080:8080 tomcat
-p 主机端口:docker容器端口
-P 随机分配端口
-i 交互
-t 终端
测试:
1. 删除本地Tomcat镜像的 docs 文档
docker exec -it ec98b5664cfc /bin/bash
cd webapps/
rm -rf docs/
2. 当前的tomcat实例 已经是一个没有文档内容的容器了
以它为模板 commit一个没有doc的tomcat的新镜像 lmtest/tomcat001:1.0
3. docker commit -a=“lm” -m “tomcat without docs” ec98b5664cfc lmtest/tomcat001:1.0
-a 作者
-m 标准信息
ec98b5664cfc 容器id
lmtest/tomcat001:1.0 容器名字:tag
新的容器产生啦!!!
2、容器 数据卷
2.1 杂记
为了保存数据 做数据共享和数据持久化
特点:
- 数据卷可在容器之间共享和重用数据
- 卷中的更改可以直接生效
- 数据卷中的更改不会包含在镜像中的更新
- 数据卷的生命周期一直持续到没有容器使用它为止
- 数据卷可完成容器到宿主机和宿主机到容器的数据共享
docker run -it -v /宿主机绝对路径:/容器内目录 镜像名
- 没有文件或目录的话 会自动创建新的文件或目录
- docker inspect 容器id
就会看到ProcessLabel
Volumes 等 限制文件的关联关系
ValumsRW 读写操作 - 在宿主机上关联的文件夹下创建或修改文件 容器上对应的关联文件夹下也会跟着变化 相反在容器上操作 宿主机也会给跟着变化
- 容器停止后 宿主机修改数据后 等容器启动 数据还会同步到
- 可以带权限
docker run -it -v /宿主机绝对路径:/容器内目录:ro 镜像名
ro 表示只读 容器内的文件只读 就是不能在容器内修改共享的文件 当然创建文件也是不允许的 - 如果没有指定不能写出现不能写的问题 在挂载目录后加一个 --privileged=true 参数
docker run -it -v /宿主机绝对路径:/容器内目录 --privileged=true 镜像名
2.2 、DockerFile添加数据卷
dickerFile 与java中的class文件一样 是源码级别的对docker的表示
- 编写一个脚本
docker build -f /mydocker/DockerFile -t lm/centos .
会以DockerFile 为模板 构建一个更新的镜像 lm/centos
-
启动容器
docker run -it lm/centos -
ls 查看已经有2个文件夹了 第一步写的那两个文件夹
-
通过上述步骤 容器内的卷目录地址已经知道 对应的主机目录地址 在where?
docker 给了默认地址
docker inspect 容器id 查看
3、数据卷容器
请听下回分解 准备会儿电影