背景需求:
整个集群基于K8S,对于某一个应用有临时修改系统时间的需求,并且要求宿主主机的时间不能被改变,也不能够影响到其他容器。
题外话
在目前如此大环境下,wordpress开源程序老外都直接屏蔽国内所有用户,还有一些其他网站例如pkgs 也恶意屏蔽国内用户,不要说开源就是全球共享了,开源也可以被开源主导国家根据其主观意志对其他国家进行屏蔽,杯具。
先说一下我的系统环境,系统 centos 7.2,docker版本 V1.10.2
一、Docker 存储驱动背景
Docker模型的核心部分是有效利用分层镜像机制,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同 Docker 容器就可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。
在docker0.7中引入了storage driver,更之后针对镜像存储docker采用了几种不同的存储drivers,包括:aufs,devicemapper,btrfs 和overlay。
device-mapper driver
最开始使用AUFS,但AUFS一直没有进入内核主线。但RHEL/Fedora等发行版本并不支持AUFS,所以,Redhat的Alexander Larsson实现了device-mapper的driver,现在dm driver由Vincent Batts在维护。在这篇文章中,Alexander详细介绍了他当时的想法。由于btrfs不成熟、overlayfs也没有进入内核主线,所以,他选择了device-mapper作为RHEL/Fedora下的解决方案。
下述过程都是在cenots 7.2上进行。
默认安装完成docker后 docker 的所有images及相关信息存储位置为:/var/lib/docker
而通常我们系统盘挂载盘一般不会很大,所以需要将其移到其他分区,我们可以采用软连接的方式来完成,示例,下面我们将其移到/home/dockerfile 目录下,具体方法如下:
首先暂停docker 服务
[root@localhost docker]# service docker stop
该tomcat的构建基于上篇文章中sun server jre 8
一、编写Dockerfile文件
FROM jiucool/java:server-jre-8u74
一、Dockerfile、Docker镜像和Docker容器的关系
在进行创建镜像之前,我们先了解一下这三者之间的关系。
Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,而 Docker 容器则可以认为是软件的运行态。从应用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,Dockerfile 面向开发,Docker 镜像成为交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当 Docker 体系的基石。
更多介绍可以移步这里:深入分析Docker镜像原理(点击链接查看)
二、创建自定义镜像的两种方式