docker,分久必合,合久必分?

作为一个运维或者测试,可以不了解每天发布的五花八门的各种开源工具,但最好了解下docker,因为这东西必将在将来改变软件的微观和宏观架构。在虚拟化方兴未艾的时代,又迎来了docker这么个东东,继续在对传统软件架构进行拆分,多进程玩腻了,玩玩多容器?

根据几天的粗浅测试,发现几个有意思的特点:

1、隔离级别的问题。对于Application Container,从图中可以看到,其隔离级别必然是不如虚拟机的。但是,虽然看上去,docker容器的1号进程与宿主机完全不同,但是还是和宿主机存在联系,比如,在docker容器启动一个apache,会发现宿主机上也多了3个apache进程,而且是完全不同的进程号。

2、启动多个服务的问题。网上有人说可以把要启动的服务打包到一个脚本里,然后把这脚本COPY到镜像里,最后用CMD启动即可,俺始终没有试验成功。最后,还是supervisord管用,想拉多少服务都没问题。注意,在centos6.5的基本源里没有supervisord,必须先安装epel

3、IP地址问题。运行docker容器的时候,如:

# docker run --name=mysql_contain1 -h=mysql_host1 -d -P docker_mysql

可以设定容器名,可以设定容器主机名,但貌似没法设IP地址?

宿主机有个docker0的虚拟网卡,其地址是192.168.42.1,发现新建的docker容器ip地址就接着后面不断累加。

4、如果我们有了一个mysql镜像,是否可以根据宿主机负载阀值动态启动容器把负载接过去?做了个小实验,当宿主机的mysql连接数超过500的时候,启动一个mysql容器,代码没啥意义,纯属测试:

#!/usr/bin/python
# Filename: db3.py
# Description: a demo to access mysql based on dynamic docker containers
# Python 2.7.6

import MySQLdb
import commands
import os
import random
import time

image_name=‘docker_mysql‘
master_host_ip=‘127.0.0.1‘
prefix_cont=‘mysql_cont‘
num_thread=500

def getDockerip():
    i=random.randint(1,10000)
    shell=‘mysqladmin -uroot -proot status|awk \‘{print $4}\‘‘
    try:
        thread = int(commands.getoutput(shell))
    except Exception:
        print ‘get thread number of master sql error‘
        exit(1)
    if ( thread > num_thread ):
        str=prefix_cont+‘%d‘ %i
        os.environ[‘cont_name‘]=str
        os.environ[‘image_name‘]=image_name
        ret=os.system(‘docker run --name="$cont_name" -d -P $image_name >docker.log 2>&1‘)
        if ( ret <> 0 ):
            print ‘create docker for mysql error‘
            exit(2)
        shell2=‘docker inspect "$cont_name"|grep IPAddress|grep -Eo \‘[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\‘‘
        str_ip=commands.getoutput(shell2)
        return str_ip
    return master_host_ip

def insertData(v):
    des_host_ip=getDockerip()
    print des_host_ip
    print ‘begin to insert data to ‘+des_host_ip
    time.sleep(3)
    try:
        my_conn=MySQLdb.connect(host=des_host_ip,port = 3306,user=‘root‘,passwd=‘root‘,db =‘db_test‘)
        cur = my_conn.cursor()
        sql="insert into t(id) values(‘%d‘)" %(v)
        cur.execute(sql)
        cur.close()
        my_conn.commit()
        my_conn.close()
        print ‘insert data to ‘+des_host_ip+‘ successfully!‘
    except MySQLdb.Error,e:
        print "Mysql Error %d: %s" % (e.args[0], e.args[1])
        exit(3)

insertData(2015)

(待续)

时间: 2024-10-11 01:25:41

docker,分久必合,合久必分?的相关文章

2019 .NET China Conf:路一直都在,社区会更好

这个周末,我从成都飞到了上海参加了首届由社区组织而非官方(比如Microsoft)组织的.NET开发者峰会(.NET Conf).为此,我特意请了两天的假(周五+周六,对,我们是大小周,这周六要上班),在周五就飞到上海了.现在将我的所见所闻总结成文字,分享给各位关注我的朋友. 一.自组织,规模大,准备精 首先,谈谈这届峰会的整体感受,那就是标题这9个字“自组织.规模大.准备精”. 这届峰会是.NET技术社区第一次独立自主举办的,参会人数目测>350人且有很多都是从四面八方赶过来的(当然珠三角地区

选一种比较熟悉的软件,点评它的优缺点,并描述此类软件的发展历史

对于音乐软件(PC端桌面音乐播放程序)我最早使用是在2005年,那时候的情况基本是千千静听这款软件一家独大,一是因为它的使用十分便捷配置要求低,几乎任何一台连上网络的电脑都可以使用它听歌,还能使用它的搜索功能找到自己想要找的歌曲,并且它还有一个非常加分的功能那就是它会在首页显示许多国内外当下流行的音乐,在那个网络娱乐新闻还不太发达的年代千千静听成了我音乐鉴赏道路上的启蒙老师...当时许多流行的外国歌手(像后街男孩,布兰妮等)都是通过这个功能被我发现的,所以当同龄人听腻了周杰伦的歌而被我的歌单所吸

Backbone设计思路和关键源码分析

一. Backbone的江湖地位: backbone作为一个老牌js框架为大规模前端开发提供了新的开发思路:前端MVC模式,这个模式也是前端开发演变过程中的一个重要里程碑,也为MVVM和Redux等开发思路奠定了夯实的基础,后来的react,vue无不是在backbone的影响下开创出来的经典模式.为什么这么说呢?我们先来回顾下Web前端开发的大概演变流程,本过程纯粹个人理解,抛砖引玉,共同探讨,如有偏差请看官指出错误: 1. 无前端:最早的网页就是HTML,还只是静态页面,当时的脚本含量极少甚

iOS-----JSON解析

JSON解析 JSON是一种广泛使用的数据交换格式,JSON同样具有跨平台.跨语言的优势,而且使用JSON作为数据交换格式时数据传输量更小. JSON的基本知识 JSON的全称是JavaScript Object Notation,即JavaScript 对象符号,它是一种轻量级的数据交换格式.JSON数据格式既适合人进行读/写,也适合计算机本身解析和生成. JSON主要有如下两种数据结构 由key-value对组成的数据结构,在不同的语言中有不同的实现.例如,在JavaScript中是一个对象

TARGETING MINIONS (minion标记与匹配)

TARGETING MINIONS 明确标记minion的角色,利用minion端的主机名或系统信息,被定义的特定角色组或是一个组合标记. 譬如,指令一个minion执行重启apache服务的命令:salt web1 apache.signal restart类似于top里面的sls文件 1 webserver.sls: 2 base: 3 'web1': 4 - webserver 匹配的方法可以是变量,正则表达式等 TARGETING WITH GRAINS 利用grains变量来标记min

使用WM_PASTE和WM_CHAR消息时中文乱码总结

凝鲠ㄘ码 蚣忖 缉毵⑶镊 脎愉沙斐 ㈣袒 元虢后仰倒去惜酒如命的礼部尚书丢掉酒壶泣不成声"我辈书生何惧一死可恩师 毒诤停 泓杵悭鲽 郢鞫履ヮ 又⊙窝苠 走出位于顶楼的船舱望向广陵江右岸看到一支异于水师装束的骑军突兀出现然后为首 屹鹌蚴┕ 惦舭麂钰 具都已经没有人认得出这位佩刀游侠是玉树临风的世子殿下大漠黄沙骄阳道路上热气 城蜚碍 镫佤壁+ 气轻轻笑道:"这些天除了听你吹嘘自己剑法如何厉害再就是听你说这个叫小年的公子 还真没谁当回事加上小家伙身体孱弱性子又软成天被欺负得都不敢

李学斌:论应用间协作V3

说明 本文主要讨论了巨型复杂业务系统的一种构建思路,力图实现决策意志的快速.准确.一致的下传并简化实施成本提供实施效率.通过全业务领域的即时流程编排,实现全网业务IT系统的快速建设与迭代.本文所讲的方法其应用情景主要面向以业务流程为主的大型业务处理系统如电商系统.尤其适合业务繁杂.业务量巨大且运营灵活多变的应用情景.我们一般要花很长时间并投入很多财力才能打造出一个系统来满足这样的要求,并保持大量的人员来跟进运营的需要.这些系统一般会有数个或数十个乃至上百个应用群构成,具有庞大的层级结构.其中的每

写在Win10发布之后 那些消失的操作系统

微软在上个月发布了全新的Windows 10操作系统,相信屏幕前的不少科技爱好者已经更新了这个最新的操作系统,体验好不好我们不去讨论,毕竟客观来说如今Windows 10还没大面积普及开来,而且从另一个方面来说,Windows系统无论好坏你都得继续用下去,因为其根本没有竞争对手,就算是如日中天的苹果,其OS X系统与Windows系统相比也是绝对的小众化. 不过,Windows能够走到今天也的确是凭借着实力过五关斩六将,或许可能有很多朋友并不知道,实际上在历史的长河中并不只有微软推出的Windo

SDH、MSTP、OTN和PTN的区别和联系

首先要说的是TDM的概念,TDM就是时分复用,就是将一个标准时长(1秒)分成若干段小的时间段(8000),每一个小时间段(1/8000=125us)传输一路信号: SDH系统的电路调度均以TDM为基础,所以看到很多人说SDH业务就是TDM业务,就是传统的电路调度,是有理论依据的: 但在SDH大红大紫的时候,另一场战争以太网和ATM(不是取款机哟)大战中,以太网取得全面胜利,从而以太网大行其道,其中又以IP最为强势,导致今天很多业务侧都IP化了,不能不说以太网太XXXXX了. 问题:SDH大红人一