Docker-02 20190307

版权声明:本文为博主原创文章,未经博主允许不得转载,如需转载请在明显处标明出处! https://blog.csdn.net/qq_36291682/article/details/88319163

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 杂记

为了保存数据 做数据共享和数据持久化
特点:

  1. 数据卷可在容器之间共享和重用数据
  2. 卷中的更改可以直接生效
  3. 数据卷中的更改不会包含在镜像中的更新
  4. 数据卷的生命周期一直持续到没有容器使用它为止
  5. 数据卷可完成容器到宿主机和宿主机到容器的数据共享

docker run -it -v /宿主机绝对路径:/容器内目录 镜像名

  1. 没有文件或目录的话 会自动创建新的文件或目录
  2. docker inspect 容器id
    就会看到ProcessLabel
    Volumes 等 限制文件的关联关系
    ValumsRW 读写操作
  3. 在宿主机上关联的文件夹下创建或修改文件 容器上对应的关联文件夹下也会跟着变化 相反在容器上操作 宿主机也会给跟着变化
  4. 容器停止后 宿主机修改数据后 等容器启动 数据还会同步到
  5. 可以带权限
    docker run -it -v /宿主机绝对路径:/容器内目录:ro 镜像名
    ro 表示只读 容器内的文件只读 就是不能在容器内修改共享的文件 当然创建文件也是不允许的
  6. 如果没有指定不能写出现不能写的问题 在挂载目录后加一个 --privileged=true 参数
    docker run -it -v /宿主机绝对路径:/容器内目录 --privileged=true 镜像名
2.2 、DockerFile添加数据卷

dickerFile 与java中的class文件一样 是源码级别的对docker的表示

  1. 编写一个脚本

在这里插入图片描述

docker build -f /mydocker/DockerFile -t lm/centos .
会以DockerFile 为模板 构建一个更新的镜像 lm/centos

  1. 启动容器
    docker run -it lm/centos

  2. ls 查看已经有2个文件夹了 第一步写的那两个文件夹

  3. 通过上述步骤 容器内的卷目录地址已经知道 对应的主机目录地址 在where?

docker 给了默认地址
docker inspect 容器id 查看
在这里插入图片描述

3、数据卷容器

请听下回分解 准备会儿电影

猜你喜欢

转载自blog.csdn.net/qq_36291682/article/details/88319163