热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Ansible安装和构建Docker

最近,花了很大的兴趣在组合使用Ansible和Docker上。所以我想这可以很好的描述一些技巧。开始,安装Docker。如果你已经安装了Ansible。PaulDurivage已经

最近,花了很大的兴趣在组合使用 Ansible 和 Docker上。所以我想这可以很好的描述一些技巧。

开始,安装 Docker。如果你已经安装了 Ansible 。 Paul Durivage 已经编写了一个在 Ubuntu 出色的安装 Docker 的工具,即使在内部实现,它也比官方安装指令容易。

如果我们在 Ubuntu 13.10 上启动,并且只从开发分支上运行 Ansible,而不安装它。步骤如下:

apt-get update
apt-get install git python-yaml python-jinja2 python-pycurl
git clone https://github.com/ansible/ansible.git
cd ansible
source ./hacking/env-setup

从那里,我们可以使用 Paul 已经上传到 Galaxy 的 docker_ubuntu 角色。因此我们可以使用一个简单的 CLI 调用下载它。

ansible-galaxy install angstwad.docker_ubuntu

并且通过在 /etc/ansible/hosts 创建一个 stub inventory 文件,写一个简单的 playbook 来使用它。

[local]
localhost

并且一个非常简单的 playbook 调用它,/tmp/docker.yml :

- hosts:local
connection: local
roles:
- angstwad.docker_ubuntu

现在我们将调用 Ansible 来启动 Docker:

ansible-playbook /tmp/docker.yml
docker pull ubuntu

现在,一切都变得非常简单。但是让我感兴趣的部分是如何使用 Ansible 用最简单的方式来构建 docker-files 。我们一直喜欢的一件事就是自动化的便携式描述。并且使得比开发 bash 更加有效率。

这里有一个在 Docker 文件中使用 Ansible 的简单例子,因此我们可以在 Ansible 中编写复杂的自动化。而不是编写一份 Docker 命令以及 shell 脚本的大杂烩。允许我们的应用部署就像把他们部署在经典的虚拟服务器上。

我们的 Dockerfile 像如下简单,在 /tmp/build/Dockerfile

FROM ubuntu
MAINTAINER yourname
RUN apt-get -y update
RUN apt-get install -y python-yaml python-jinja2 git
RUN git clone http://github.com/ansible/ansible.git /tmp/ansible
WORKDIR /tmp/ansible
ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin
ENV ANSIBLE_LIBRARY /tmp/ansible/library
ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH
RUN git clone http://github.com/yourusername/yourrepo.git /tmp/example
ADD inventory /etc/ansible/hosts
WORKDIR /tmp/examples
RUN ansible-playbook site.yml -c local
EXPOSE 22 3000
ENTRYPOINT [“/usr/bin/foo”]

与你的 Dockerfile 一起的一个文件名字为 inventory:

[local]
localhost

因此,像这样构建:

docker build .

现在读者可以非常容易的适应各种方法。但是最明显的事情或许是打开不同的端口 或者是运行不同的 entry point 。git 检出文件可能被忽略,并且被替换成 "ADD" 命令获得更加大的效率。

这里最妙的是哪部分? 是你的 playbook 能干任何事情,并且做任何重的事情。

下一步要做的更加具有逻辑的事情是用 Docker 分发你的容器,这个可以通过在 Ansbible 核心的 Docker 模块来实现。最好的经验,我们建议使用开发分支的 Ansible 预览版本,它支持最新版本的 Docker。

在这里看 Docker 模块的文件以及能力 See the Docker module documentation and capabilities here.

非常感谢 Cove Schneider 和 Pavel Antonov 开发的这个模块。

因此,结合 Ansbile 和 Docker ,只需要稍加挖掘,你能看到,你不仅能使用 Ansbile 管理你的容器构建进程,而且可以决定什么容器应该运行在哪里。

我希望这篇文章能帮助在探索文件的构建方面使事情更加简单。如果你想少一点手工组合,你也可以像这样组合 Packer 和 Docker。

注: Packer 是一个通过一个源文件跨平台构建同样镜像的工具

Related News

Deploying Highly Available OpenShift Origin Clusters | Ansible Me A Sandwich | Listen To Your Servers Talk | Fixing Heartbleed With Ansible | Orchestration, You Keep Using That Word


推荐阅读
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 如何在Linux系统中实现Windows风格的桌面环境:将Ubuntu 18.04定制为Windows主题界面
    如果您是从Windows转到Linux系统的用户,可能会觉得默认的Ubuntu主题和桌面环境缺乏吸引力和可定制性。尤其是对于习惯了Windows风格的任务栏和主题的用户,Ubuntu 18.04的橙色主题可能显得过于简洁。为了提升用户体验,可以通过安装特定的桌面环境和主题来实现类似Windows的界面效果。本文将详细介绍如何在Ubuntu 18.04中配置和定制桌面环境,使其具备Windows风格的外观和功能。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
author-avatar
ChrisBao
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有