创建docker镜像的方法
- 使用”docker commit”命令
- 使用”docker build”命令+”Dockerfile”文件
不推荐使用docker commit命令,而应该使用更灵活、更强大的dockerfile来构建docker镜像。
本篇文章先介绍docker commit来构建镜像。
学习 总结 思考
Docker 对 Linux 内核版本的最低要求是3.10,如果内核版本低于 3.10 会缺少一些运行 Docker 容器的功能。这些比较旧的内核,在一定条件下会导致数据丢失和频繁恐慌错误。
dotCloud公司(PaaS)自身业务发展并不如愿,创始人Solomon Hykes决定投向容器技术,并从一开始就在Github上开源,2013年项目命名为Docker,并取得广泛的关注。
Docker是基于LXC技术之上构建的Container容器引擎,基于Go语言并遵循Apache 2.0协议开源。
Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架(没有数据存储)。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。
假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器。我们如何来定义playbook?
第一个play用到第一个主机上,用来构建httpd,第二个play用到第二个主机上,用来构建php,第三个play用到第三个主机上,用来构建MySQL。这些个play定义在playbook中比较麻烦,将来也不利于模块化调用,不利于多次调。比如说后来又加进来一个主机,这个第4个主机既是httpd服务器,又是php服务器,我们只能写第4个play,上面写上安装httpd和php。这样playbook中的代码就重复了。
我们每次改完配置文件,比如上一篇博客中的的apache.yml,没必要把整个playbook都运行一遍,只需要运行改变了的task。我们可以给task一个标签,运行playbook时明确只运行这个标签对应的task就可以了。多个任务可以使用同一个tags。
如果在某次运行中,我们多次运行同一个playbook,第一次运行时我们期望所有的tasks都运行,第二次运行时我们期望只运行某一个task,你可以给这个task定义一个tags,例如:
当有需要重复性执行的任务时,可以使用迭代机制。其使用格式为将需要迭代的内容定义为item变量引用,并通过with_items语句来指明迭代的元素列表即可。例如:
- name: add several users
user: name={{ item }} state=present groups=wheel
with_items:
- testuser1
- testuser2
在ansible中还可以进行条件测试。如果需要根据变量、facts或此前任务的执行结果来做为某task执行与否的前提时要用到条件测试。
在task后添加when子句即可使用条件测试:when语句支持Jinja2表达式语法。例如: