上期回顾
上期内容我们聊了一下Docker的基本使用.常用指令,有兴趣的同学可以看一下.
本期内容
1:Docker日志
2:镜像原理
3:镜像打包与运行
4:容器数据卷
Docker日志
命令参数
# 加入的时间戳
-t
# 跟随最新的日志打印
-f
# 输出最后几行的日志
–tail 行数
使用
docker logs -f -t –tail 10 容器ID或容器名称
Demo
# 启动一个centos,并且每两秒在Console输出一个Hello jianghai
docker run -d –name river centos /bin/sh -c “while true;do echo hello jianghai;sleep 2;done”
# 查看最后10行的日志
docker logs -f -t –tail 10 river
查看容器内的进程
docker top 容器ID或容器名称
镜像原理
简介
镜像是一种轻量级,可执行的独立软件包.用来打包软件运行环境与基于运行环境开发的软件,包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量,配置文件.
UnionFS
# 联合文件系统
他是一种分层,轻量级,高性能的文件系统,他支持对文件系统的修改作为一次提交来一层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统,Union文件系统是Docker镜像的基础,镜像可以通过分层来继承,基于基础镜像(无父镜像),可以制作各种具体的应用镜像.
# 特性
一次同时挂载多个文件系统,但从外面看,只能看见一个文件系统联合加载会把各层文件系统叠加起来, 这样最终的文件系统会包含所有底层的文件与目录.
# Docker镜像加载原理
docker的镜像实际上由一层一层的文件系统组成.这种层级的文件系统UnionFS.
bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统.在Docker镜像的最底层是bootfs,这一层与我们典型的LInux系统是一样的.包含boot加载器和内核.当boot加载完成之后整个内核就都在内存中了.此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs.
rootfs(root file system),在bootfs之上,包含的就是典型的Linux系统中的/dev,/proc,/bin,/etc,等标准目录和文件.rootfs就是各种不同的操作系统发行版,如ubuntu,centos等.
镜像打包与运行
>下载 tomcat
docker pull tomcat
>运行 tomcat
docker run -it --name rivertomcat -p 8888:8080 tomcat
>进入tomcat所有的容器资源文件管理器
docker exec -it rivertomcat /bin/bash
>打包一个我们自己的 tomcat
# -a : 作者名称
# -m : 打包信息
docker commit -a jianghai -m="package my tomcat" 要打包的镜像ID jianghai/tomcat:1.0
>启动我们自己打包生成的 tomcat
docker run -it -p 7700:8080 jianghai/tomcat:1.0
容器数据卷
Docker理念
能做什么
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器.但不属于联合文件系统.因此能够绕过UnionFS提供一些有用于持续存储或共享数据的特性.
卷设计的目的就是数据的持久化.完全独立于容器的生存周期,因此Docker不会在容器删除时删除其他挂载的数据卷.
特点
数据卷
数据卷就是数据持久化的一个操作
容器内添加:
命令添加
# 这样会在宿主机和容器中生成一个数据共享的文件夹.
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
# 加参数 ro:容器内的目录只读,不可写
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
DockerFile解析
使用DockerFile 封装一个镜像
>第一步 : 首先我们需要写一个DockerFile文件,里面写入我们所要封装的内容.
# 封装内容
FROM centos
# 在新生成的镜像下面有这两个文件夹[与宿主机文件共享]
VOLUME [“/dataVolumeFloder1″,”/dataVolumeFloder2”]
# 创建完成在Dos Show 创建成功
CMD echo “make successful”
# 进入到根目录下
CMD /bin/bash
>第二步 : 创建开始创建新镜像
# -f 我们写的DockerFile的具体文件路径
# -t 封装的新的镜像名称
docker build -f myDockerFile -t jianghai/centos .
>第三步 : 查看该新资源文件的信息[可省略]
docker inspect 镜像ID或镜像名称
数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器.
简单的说就是通过继承一个已经启动的容器,这样多个容器之间的共享资源文件夹里面的数据是共享的.
Demo:
# 启动第一个实例
docker run -it –name jh01 jianghai/centos
# 我们在这个实例的共享文件夹下创建一个文件,如:a.txt
# 启动第二个实例
# 共享资源文件夹继承第一个实例
# –volumes-from 继承自哪个容器
docker run -it –volumes-from jianghaiCTOS –name jh02 jianghai/centos
# 此时我们可以看见新实例中的共享资源文件夹下也有a.txt.
彩蛋
Docker这个容器技术非常有必要了解与学习.本教程适用于初学者.
下期我们来讲:
1:DockerFile;
2:自定义Tomcat;
3:上传我们的容器到阿里服务器;
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22