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.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的脚本

 

时间: 2024-11-04 13:46:00

Docker培训课程 - 谈docker,chef,puppet,ansible,salt stack延伸的相关文章

【转载】从Docker容器漏洞谈Docker安全

近日,一篇在Docker博客上发表的文章显示,Docker的容器已经被突破,并且能够遍历宿主机的文件了.由于Docker的轻量,快速等等优点,让Docker在PaaS[注]领域愈发火热,自然也就吸引了安全人员对其进行研究.这篇文章无疑将Docker推进了一个新纪元:放开应用,想想安全. 不要给用户root权限 该文章的作者强调:只有在容器内以 root 权限运行不受信任的应用程序,才有可能触发这个漏洞.而这是我们不推荐的运行 Docker Engine 的方式. 这句话可以分两个层次来解读,首先

DockOne微信分享(七十):浅谈Docker安全合规建设

本文讲的是DockOne微信分享(七十):浅谈Docker安全合规建设[编者的话]通过阅读网上帖子及浏览相关信息,大家可能会产生一种错觉:Docker安全性不足,对Docker导入生产环境持保守态度.不过实际情况是,虽然我们需要对容器的安全性高度关注,但只要使用得当,完全可以成为一种不低于使用虚拟机或者裸机的安全.高效生产系统. 今天和大家聊聊Docker的安全合规建设. 安全,这里我们指的是信息安全,包括数据安全和网络安全,主要是数据在处理.传输.存储等过程中的安全,它包括了信息本身的安全和防

浅谈Docker与容器

Docker介绍 1. Docker 主要解决什么问题 Docker 对外宣称的是Build.Ship 和Run,Docker 要解决的核心问题就是快速地干这三件事情.它通过将运行环境和应用程序打包到一起,来解决部署的环境依赖问题,真正做到跨平台的分发和使用.而这一点和DevOps不谋而合,通过Docker可以大大提升开发.测试和运维的效率.在这个移动互联网的时代,如果一个工具能够节省人力,提升效率,必定会流行起来. 2. Docker 的历史 之前提到一家公司叫DotCloud,这家公司是一家

再谈Docker,微服务的场景化应用

看过<超能陆战队>的朋友可能仍然对于电影中的男主角介绍和演示自己发明的微型机器人的场景记忆犹新. "它"看起来只是一跟带有磁性的小小的金属部件.但是它是一个独立的个体,自己能够独立的大脑,同时,和同伴之间有相互的接口你行链接.能够通讯.能够随意的组合成任意功能的物体. 通过类比,我们很容易由硬件领域想到软件领域.譬如软件系统的架构,一直都是伴随着几种主流的模式,集中式,分布式以及最近才开始流行起来的"微服务". 滨田宏发明的微型机器人,其实和微服务的思想

浅谈 Docker 隔离性和安全性

介绍 相信很多开发者都默认Docker这样的容器是一种沙盒(sandbox)应用,也就是说他们可以用root权限在Docker中运行随便什么应用,而Docker有安全机制能保护宿主系统.比如,有些人觉得Docker容器里面的进程跟虚拟机里面的进程一样安全:还有的人随便找个源就下载没有验证过的Docker镜像,看都不看内容就在宿主机器上尝试.学习和研究:还有一些提供PaaS服务的公司竟然允许用户向多租户系统中提交自己定制的Docker镜像.请注意,上述行为均是不安全的.  本文将介绍Docker的

《循序渐进学Docker》——第一部分 Part 1 基础篇 第1章 全面认识Docker 1.1 Docker是什么

第一部分 Part 1 基 础 篇 第1章 全面认识Docker 第2章 初步体验Docker 第3章 Ubuntu下使用Docker 第4章 Docker的基础知识 第1章 全面认识Docker 欢迎来到Docker的世界. Docker,Golang社区杀手级的应用,是Github上最活跃的项目之一,也是开源社区最受欢迎的项目. Docker,号称要成为所有云应用的基石,并把互联网升级到下一代. 开发.测试.运维人员看到Docker,都激动地说:"太好了,这正是我所需要的!" Do

puppet的salt模块

salt简单来说就是等于强化版的func+弱化版的puppet 在这里我暂时将其用来替代func的作用(ps:虽然有点浪费) 架构如下: ================================== manifests ================================== 1,at /etc/puppet/modules/salt ------------------------- init.pp +++++++++++++++ class salt (  $server

Docker基础之一: Docker架构

Docker的架构 Docker使用的是 C-S架构.Docker的客户端同Docker Daemon进行交互,其中主要的工作是通过 daemon来完成,包括拉取镜像,编译镜像,运行容器,发布容器等.Docker client和daemon可以运行在同一个系统上,也可以通过远程方式进行访问.Docker client和daemon之间是在 socket 上通过RESTful API来进行交互的.  Docker Daemon 如上图所示,Docker daemon运行在一个主机之上,用户并不是直

你真的了解Docker吗?——Docker插件机制详解

云栖TechDay活动第十八期中,阿里云容器服务团队的核心成员陈萌辉带来了题为<Docker插件机制详解>的分享,分享中,他结合阿里云容器服务实践介绍了Docker插件的基本原理.实现方法以及插件机制未来的演进. 幻灯片下载地址:https://yq.aliyun.com/attachment/download/?filename=bdefe06ba7a14d7604af5a63a4bcc4f3.pdf 以下为现场分享观点整理. 为什么需要Docker插件?   Docker之所以这么火并且有