Docker培训课程 - 谈docker,chef,puppet,ansible,salt stack延伸

简介: Docker培训课程 - 谈docker,chef,puppet,ansible,salt stack延伸Docker training course - Discuss docker, chef, puppet, ansible, salt stack Hangout本文翻译自:http://www.


Docker培训课程 - 谈docker,chef,puppet,ansible,salt stack延伸


Docker training course - Discuss docker, chef, puppet, ansible, salt stack Hangout
本文翻译自:
http://www.slideshare.net/Flux7Labs/docker-training-course-discuss-docker-chef-puppet-ansible-salt-stack-hangout

注:saltstack 和 Puppet Chef 一样可以让你同时在多台服务器上执行命令也包括安装和配置软件

 

基本概念


Docker并不是Linux Container的替代品

 

命名空间Namespaces:


●隔离的第一级
●在一个容器进程中运行不能看到或影响容器外运行的其他进程

 

控制组Control Groups:


●LXC的主要组件
●资源计算和限制是关键的功能。
●重要的多租户平台:保证一致的正常运行时间和性能

 

LXCs

 

LXCs是轻量级的。

运行在同一台主机上的多个实例隔离

共享单个内核,但他们可以消耗的数量资源的一组定义。

不允许实例之间的干扰。

 

Docker术语

 

Docker注册地Registry:
是一个Docker的注册表服务器,它帮助托管库和镜像,并交付

Layer层:
当Docker装入根文件系统的堆叠每个文件系统

Image镜像:
是一个只读层永远不会改变

Container容器:
使用一个或多个镜像自足环境构建的。镜像可以依据已提交的container被创建

Repository仓库:
设置本地Docker或注册服务器上的镜像

 

Docker文件

 

Dockerfiles允许描述一次构建步骤,然后从源代码自动生成一个容器,它可以被看作是一个镜像的表示

帮助


●轻松构建镜像
●自动化和脚本创建镜像

 

Docker labs实验室

 

安装Docker(Ubuntu的13.10)加入Docker库当地钥匙:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

添加Docker repo到apt源列表,更新并安装LCX-Docker包
sudo sh -c "echo deb
http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker

验证安装
sudo docker run -i -t ubuntu /bin/bash

 

docker pull ubuntu:精确


命令: docker pull ubuntu:12.04
用途:拉Ubuntu的LTS 12.04精确的基影像

 

Docker run


选择一个模式来运行Docker容器


运行背景/分离


1.容器不监听
2. IO是通过网络或共享做的

 

运行前景


1.默认模式
2.控制台上连接到进程的标准输入,标准输出,标准错误

 

运行交互式


1.需要持久的标准输入

 

Docker运行ssh

 

Dockerfile在一个容器建立sshd服务
# sshd
#
# VERSION 0.0.1
FROM ubuntu MAINTAINER Thatcher R. Peskens "
thatcher@dotcloud.com"
# make sure the package repository is up to date
RUN echo "deb
http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd RUN echo 'root:screencast' |chpasswd
EXPOSE 22
CMD /usr/sbin/sshd -D


Docker run(端口转发)

 

自动映射所有暴露的端口到主机:
命令:docker run -P <imageid>

端口绑定到主机接口
命令:docker run -p [([<host_interface>: [host_port]])|(<host_port>):] <container_port>[/udp] <image> <cmd>

 

docker run (卷共享)

 

创建容器用2个卷

命令:docker run -v /var/volume1 -v /var/volume2 DATA busybox true

Mount数据卷到应用程序容器
命令:docker run -t -i -rm -volumes- from DATA -name client1 ubuntu bash

 

Docker diff


命令: docker diff CONTAINER
用途:列出在一个容器中的文件系统的变化,文件和目录

 

Docker开发工作流程

 

应用程序:
VyScale -- python flask + MySQL
flux7.com -- php +MySQL
client1 -- python + Cassandra (multi-tenant)
client2 -- Ruby on Rails + MySQL + Redis

 

应用程序架构图

 

新员工/新笔记本电脑


Install Vagrant
git pull <code repository>
devenv setup
devenv start

幕后:
1.下载VBOX图像
2.运行VM共享文件​​夹+暴露的端口+静态IP
3.生成容器
4.以正确的顺序启动容器和暴露正确的端口(DB ??)
5.在/vagrant/log文件夹复制日志卷
6.设置/etc/hosts指向VM
7.打印URL来访问应用程序

 

调试流程

 

编辑代码(在你选择的编辑器,可以使用所有的别名和命令)

//重新启动服务器(可以使用麒麟实现自动化)
devenv的负载

//检查日志在顶部/ logs文件夹

代码提交

devenv commit -t <tag>←进行调试后git push

幕后:
1.提交所有Docker容器
2.保存版本以供将来使用

 

QA

 

Jenkins polls the repo for pushes
使用相同的脚本来运行使用容器测试

代码交付

现有的容器被销毁(可以更好)
新的容器建成并开始

Chef recipe更新

devenv rebuild
devenv push

幕后:
1.运行chef recipe创建新的容器
2.提交容器到主注册表

添加/删除 服务/层
改变devenv的脚本

 

目录
相关文章
|
6月前
|
运维 安全 网络安全
构建高效自动化运维体系:Ansible与Docker的完美融合
【2月更文挑战第30天】在当今快速迭代和持续部署的软件发展环境中,自动化运维成为确保效率和稳定性的关键。本文将探讨如何通过结合Ansible和Docker技术,构建一个高效的自动化运维体系。我们将分析Ansible的配置管理功能和Docker容器化的优势,并展示它们如何协同工作以简化部署流程,增强应用的可移植性,并提供一致性的系统环境。此外,文章还将介绍一些最佳实践,帮助读者在真实环境中实现这一整合方案。
|
6月前
|
存储 运维 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【2月更文挑战第31天】 随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性和提升部署效率的关键手段。本文将详细探讨如何通过Ansible和Docker的结合来构建一个高效、可靠且易于管理的自动化运维体系。首先,介绍自动化运维的必要性及其在现代IT基础设施中的作用;然后,分别阐述Ansible和Docker的技术特点及优势;最后,提供一个基于Ansible和Docker结合使用的实践案例,以及实施过程中遇到的挑战和解决方案。
|
6月前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
6月前
|
运维 监控 安全
构建高效自动化运维体系:Ansible与Docker的协同实战
【5月更文挑战第25天】 在当今快速迭代的软件发布环境中,自动化运维成为确保部署效率和可靠性的关键。本文通过深入分析Ansible和Docker技术,探索它们如何协同工作以构建一个高效的自动化运维体系。文章不仅介绍了Ansible的配置管理功能和Docker容器化的优势,还详细阐述了将两者结合的实践策略,旨在帮助读者理解并实现更智能、更灵活的基础设施管理。
|
6月前
|
运维 持续交付 数据安全/隐私保护
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第26天】 在追求持续交付和快速迭代的现代软件开发过程中,自动化运维成为确保系统稳定性和提升部署效率的关键。本文将探讨如何通过结合Ansible和Docker技术,构建一个既灵活又强大的自动化运维体系。我们将介绍Ansible的作用、Docker容器化的优势以及二者结合的最佳实践,旨在为读者提供一套可落地的解决方案,以优化他们的DevOps流程。
|
6月前
|
运维 安全 持续交付
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第27天】在当今IT基础设施管理领域,自动化和微服务架构日益成为提高效率和响应速度的关键。本文将探讨如何通过结合Ansible和Docker技术,打造一套既灵活又可靠的自动化运维体系,实现持续集成、持续部署以及自动化管理。文章不仅介绍了相关技术的核心概念,还提供了实际案例分析,以期给运维专业人士提供参考,帮助他们优化现有的运维流程。
|
6月前
|
运维 监控 数据安全/隐私保护
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第27天】 在现代IT基础设施管理领域,自动化运维已经成为提升效率、确保一致性和降低人为错误的关键手段。本文将深入探讨如何通过结合Ansible和Docker技术,构建一个灵活且高效的自动化运维体系。不同于传统摘要的概括性描述,我们将直接切入主题,展示这两个工具如何在实际场景中相互补充,实现配置管理、部署流程的自动化,以及如何处理复杂环境中的运维挑战。通过阅读本文,读者可以获得对自动化运维实践中关键技术选择和应用的深刻见解。
|
6月前
|
运维 监控 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【5月更文挑战第28天】 在当今快速演变的IT环境中,自动化已成为维护系统稳定性与提高效率的关键。本文将探讨如何通过结合Ansible和Docker技术构建一个高效的自动化运维体系。文章不仅介绍两者的基本概念,还详细阐述了集成实践,以及通过真实案例分析其优势和潜在挑战,旨在为读者提供一套可行的解决方案,以优化他们的DevOps流程。
|
6月前
|
运维 安全 API
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第13天】在现代IT基础设施管理中,自动化运维已成为提升效率、确保一致性和降低人为错误的关键。本文通过深入探讨Ansible和Docker的集成实践,揭示了如何构建一个灵活、可扩展且高效的自动化运维体系。我们将从理论到实践,展示如何利用这两种技术实现自动化部署、管理和扩展应用服务,以及它们如何帮助运维团队应对快速变化的业务需求和复杂的IT环境。
94 1
|
6月前
|
运维 负载均衡 持续交付
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第7天】 在当今快速迭代的软件开发环境中,自动化运维成为确保部署效率和一致性的关键。本文将探讨如何通过结合Ansible和Docker技术,构建一个高效的自动化运维体系,旨在提升运维效率,减少人为错误,并实现持续集成与持续部署(CI/CD)的流程自动化。文章详细阐述了Ansible的配置管理机制、Docker容器化的优势,以及二者在实际运维场景中的结合应用,为读者提供一套可行的自动化运维解决方案。
110 2