上期回顾

上期内容我们聊了一下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 封装一个镜像

docker打包python应用_docker 打包镜像_docker打包

>第一步 : 首先我们需要写一个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