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 "[email protected]"
# 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-10-12 07:58:04

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

国际舞台上大家如何谈Docker?DockerCon十大看点

[编者按]在去年的DockerCon 2014大会上,来自Google.IBM.RedHat.Rackspace等公司的核心人物均发表了主题演讲,在那次大会上,我们也看到了公布了很多的与Docker相关的开源项目,比如:Kubernetes .cAdvisor .Libcontainer 等,那么随着主流的云厂商以及Linux厂商都加入了支持Docker阵营,以及随着Rocket的出现,今年的DockerCon2015会有哪些精彩看点,下文为你揭晓. 以下为原文: 关注Docker的朋友一定知道

浅谈Docker三两事

Docker 到底是个什么东西呢?我们在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机.可能很多人都用过虚拟机,而对容器这个概念比较的陌生.我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件.每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用.每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统.而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配.容器包含应用和其所有的依赖

再谈docker基本命令

子曰,温故而知新 今日,再次看书之际,又寻得docker的几条使用命令,用小本本记下来 配置docker镜像源 当我们在拉去一些共有镜像时,默认,docker会向docker.io去获取,如果在拉取的过程中出现下载速度慢的情况呢,其实可以试试用一些国内的镜像源,例如:daocloud镜像站官方文档: https://www.daocloud.io/mirror仅需要一条明明足以 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh |

Docker exec与Docker attach

.. 声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 新浪微博:@寻觅神迹 内容系本人学习.研究和总结,如有雷同,实属荣幸! ================== Docker exec与Docker attach 不论是开发者是运维人员,都经常有需要进入容器的诉求. 目前看,主要的方法不外乎以下几种: 1. 使用ssh登陆进容器 2. 使用nsenter.nsinit等第三方工具 3. 使用docker本身提供的工具 方

Docker推出了Docker云,给大家介绍下哈!

Docker推出了Docker云,给大家介绍下哈. 收到了Docker官网的邮件邀请,他们推出了Docker云:https://cloud.docker.com 账号信息栏目下有: 云提供商:眼下支持AWS.Digital Ocean,Microsoft Azure,SoftLayer,Packet. 代码提供商:眼下支持GitHub API键:用来首选Docker云平台的API 改动password,改动邮件地址,通知,计划,账单.核,兑换优惠码 watermark/2/text/aHR0cD

Ubuntu-Docker[1]安装Docker,通过Docker部署net core代码,需要结合[.NET Core 18]发布、ASP.NET Core Docker部署

1)通过系统自带包安装 通过自带包安装,可能Docker版本较旧 $ sudo apt-get update Reading package lists... Done $ sudo apt-get install -y docker.io {{{-y表示同意.没有-y也可执行,系统会问是否安装,输入y回车即可 apt-get -y install这个指令则是跳过系统提示,直接安装.}}} Adding group `docker' (GID 121) ... Done. docker star

Docker Machine 和 Docker Engine 的区别

Docker Engine 当人们提到 Docker,一般而言,大家说的是 Docker Engine,如下图:  它是一个 client-server application. Docker Engine 由三个部分组成: Docker 进程(Docker Daemon) REST API:指定了和进程交互的接口 CLI(command line interface):通过 REST API 和 daemon 通信,诸如:docker run <image>, docker ps... Do

Docker学习笔记(6-1)Docker镜像与Docker仓库

学习目标: 列出镜像 docker images 删除镜像 docker rmi docker镜像:联合加载技术aufs实现的层叠的只读文件系统 1.#使用docker info查看存储驱动和存储位置 存储位置:/var/lib/docker sudo ls -ls /var/docker/aufs diff layers mnt sudo ls -ls /var/docker/aufs/mnt 很多的镜像 2.列出镜像docker images -a 显示所有镜像(包括中间镜像) -f  过滤

docker技术剖析--docker网络

防伪码:不经一番寒彻骨,怎得梅花扑鼻香.                 docker技术剖析--docker网络 一. Docker 中的网络功能介绍 默认情况下,容器可以建立到外部网络的连接,但是外部网络无法连接到容器. Docker 允许通过外部访问容器或容器互联的方式来提供网络服务 外部访问容器: 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过  -P  或  -p  参数来指定端口映射. 练习环境:运行一个容器,提供web服务和ssh服务 宿主机启用路由转发(net.