KVM管理平台与股市

OpenSkill 发表了文章 • 0 个评论 • 872 次浏览 • 2015-07-17 09:30 • 来自相关话题

先吐槽下qq群的调查功能,先后搞了2次调查,都没有了,数据消失了。难道qq调查的理念是,玩“闪调”,调查完就消失?




说下调查结果
OpenStack从调查结果看,OpenStack无疑是王者,前几天刚过了5岁生日,已经5岁了,但是还没有成熟,依旧活力四射。有人说OpenStack就是一个框架,一个协议族,就像网络的TCP/IP模型,真正要实施还要靠自己。
大家形成的共识是,玩OpenStack没有一定规模的开发团队搞不定,对中小型企业来说,要使用OpenStack,买一个有支持的发行版也是一个思路。OpenStack 评级 持有 还会继续升值
 
Cloudstack OpenNebulaCloudstack OpenNebula 这一年来,明显社区活跃度在下降,尤其是思杰投入到OpenStack阵营,更是对Cloudstack的打击,如果一直在使用这两个平台,可以继续使用,如果没有使用过,这两个平台建议就不要选择了。Cloudstack OpenNebula 评级 出售 升值空间已经不大了
 
oVirt/RHEVoVirt/RHEV 更适合中小型企业使用,设计目标也是中小型企业的管理工具,从个人测试的结果看,也是大问题没有,小问题不断,而且更新频繁,经常造成安装都是问题,要稳定使用还需要打磨。oVirt/RHEV 评级 持有 还会继续升值
 
ZStackZStack 是国人开发的开源管理软件,脱胎于Cloudstack,许多理念和Cloudstack一样,但是比Cloudstack部署、使用方便很多,现在版本迭代非常快,很快要推出中文版了。ZStack 评级 关注 还会继续升值,建议考虑在1.0的时候买入
 
WebVirtMgrWebVirtMgr 是一个纯Python写的管理工具,前端和后端都是Python,是Python用户者的最爱,许多Python爱好者都对WebVirtMgr做了二次定制,目前主要的问题是功能太少。WebVirtMgr 评级 关注 又可能继续升值,建议考虑在成熟的时候买入
 
Virtsh+VirtManagerVirtsh+VirtManager 是老牌绩优股,是每个人必备的工具,这个就不多说了。Virtsh+VirtManager 评级 持有 长期稳定升值
 
自己研发自己研发也是一个思路,底层的Libvirt已经非常完善了,完全可以在这个基础上,根据自己需求,开发一个非常简单的,适合自己的平台就ok。自己研发 评级 持有 会持续升值
 
热爱虚拟化技术的同学,可以扫描二维码,订阅哦!




原文地址 查看全部
kvm.png

先吐槽下qq群的调查功能,先后搞了2次调查,都没有了,数据消失了。难道qq调查的理念是,玩“闪调”,调查完就消失?
kvm1.png

说下调查结果
OpenStack
从调查结果看,OpenStack无疑是王者,前几天刚过了5岁生日,已经5岁了,但是还没有成熟,依旧活力四射。有人说OpenStack就是一个框架,一个协议族,就像网络的TCP/IP模型,真正要实施还要靠自己。
大家形成的共识是,玩OpenStack没有一定规模的开发团队搞不定,对中小型企业来说,要使用OpenStack,买一个有支持的发行版也是一个思路。
OpenStack 评级 持有 还会继续升值
 
Cloudstack OpenNebula
Cloudstack OpenNebula 这一年来,明显社区活跃度在下降,尤其是思杰投入到OpenStack阵营,更是对Cloudstack的打击,如果一直在使用这两个平台,可以继续使用,如果没有使用过,这两个平台建议就不要选择了。
Cloudstack OpenNebula 评级 出售 升值空间已经不大了
 
oVirt/RHEV
oVirt/RHEV 更适合中小型企业使用,设计目标也是中小型企业的管理工具,从个人测试的结果看,也是大问题没有,小问题不断,而且更新频繁,经常造成安装都是问题,要稳定使用还需要打磨。
oVirt/RHEV 评级 持有 还会继续升值
 
ZStack
ZStack 是国人开发的开源管理软件,脱胎于Cloudstack,许多理念和Cloudstack一样,但是比Cloudstack部署、使用方便很多,现在版本迭代非常快,很快要推出中文版了。
ZStack 评级 关注 还会继续升值,建议考虑在1.0的时候买入
 
WebVirtMgr
WebVirtMgr 是一个纯Python写的管理工具,前端和后端都是Python,是Python用户者的最爱,许多Python爱好者都对WebVirtMgr做了二次定制,目前主要的问题是功能太少。
WebVirtMgr 评级 关注 又可能继续升值,建议考虑在成熟的时候买入
 
Virtsh+VirtManager
Virtsh+VirtManager 是老牌绩优股,是每个人必备的工具,这个就不多说了。
Virtsh+VirtManager 评级 持有 长期稳定升值
 
自己研发
自己研发也是一个思路,底层的Libvirt已经非常完善了,完全可以在这个基础上,根据自己需求,开发一个非常简单的,适合自己的平台就ok。
自己研发 评级 持有 会持续升值
 
热爱虚拟化技术的同学,可以扫描二维码,订阅哦!
kvm2.png

原文地址

Elasticsearch 安装

OpenSkill 发表了文章 • 0 个评论 • 783 次浏览 • 2015-07-09 19:41 • 来自相关话题

因为ES是java语言编写的程序,所以安装Elasticsearch唯一的要求是安装官方新版的Java下载地址
64位系统java安装脚本如下:#!/usr/bin/env bash

java_install () {
rpm -qa | grep -i JDK;if [ $? -eq 0 ];then rpm -qa | grep -i JDK | xargs -n 1 -t rpm -e --nodeps;fi
os=$(uname -m)

if [ $os == "x86_64" ];then
cd /usr/local/src/
wget -c http://118.186.221.78:8080/jdk-7u51-linux-x64.gz (ip地址不是有效的,你换成你jdk下载地址就好)
tar zxf jdk-7u51-linux-x64.gz -C /usr/local/

sed -i 's@jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024@#jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024@g' /usr/local/jdk1.7.0_51/jre/lib/security/java.security
ls /usr/bin/java* > /dev/null 2>&1;

if [ $? -eq 0 ];then
ls /usr/bin/java* | xargs -n 1 -t rm -rf
else
ln -s /usr/local/jdk1.7.0_51/bin/java /usr/bin/java
ln -s /usr/local/jdk1.7.0_51/bin/javac /usr/bin/javac
ln -s /usr/local/jdk1.7.0_51/bin/javadoc /usr/bin/javadoc
ln -s /usr/local/jdk1.7.0_51/bin/javaws /usr/bin/javaws
fi

cd /usr/local/jdk1.7.0_51/
echo "export JAVA_HOME=/usr/local/jdk1.7.0_51/" >> /root/.bashrc
source /root/.bashrc
echo "export PATH=$JAVA_HOME/bin:$PATH" >> /root/.bashrc
echo "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /root/.bashrc
source /root/.bashrc
echo "export JAVA_HOME=/usr/local/jdk1.7.0_51/" >> /etc/rc.local
fi

}
java_install安装开始
你可以从 Downloads | Elasticsearch下载最新版本的Elasticsearch,进行安装:curl -L -O “http://download.elasticsearch.org/PATH/TO/VERSION.zip”
unzip elasticsearch-$VERSION.zip
cd elasticsearch-$VERSION从 Downloads | Elasticsearch 获得最新可用的版本号并填入URL中

在生产环境安装时,除了以上方法,你还可以使用Debian或者RPM安装包,地址在这里:downloads page,或者也可以使用官方提供的Puppet module或者Chef cookbook。

安装Marvel
Marvel是Elasticsearch的管理和监控工具,在开发环境下免费使用。它包含了一个叫做Sense的交互式控制台,使用户方便的通过浏览器直接与Elasticsearch进行交互。
 
Elasticsearch线上文档中的很多示例代码都附带一个View in Sense的链接。点击进去,就会在Sense控制台打开相应的实例。安装Marvel不是必须的,但是它可以通过在你本地Elasticsearch集群中运行示例代码而增加与此书的互动性。
Marvel是一个插件,可在Elasticsearch目录中运行以下命令来下载和安装:./bin/plugin -i elasticsearch/marvel/latest你可能想要禁用监控,你可以通过以下命令关闭Marvel:echo 'marvel.agent.enabled: false' >> ./config/elasticsearch.yml运行Elasticsearch
Elasticsearch已经准备就绪,执行以下命令可在前台启动:./bin/elasticsearch如果想在后台以守护进程模式运行,添加-d参数。
 
打开另一个终端进行测试:curl 'http://localhost:9200/?pretty'你能看到以下返回信息:{
"status": 200, //状态码
"name": "Shrunken Bones", //默认集群名称
"version": {
"number": "1.4.0", //ES版本号
"lucene_version": "4.10" //lucene版本号
},
"tagline": "You Know, for Search"
}这说明你的ELasticsearch集群已经启动并且正常运行,接下来我们可以开始各种实验了。
 
集群和节点[b]节点(node)[/b]是一个运行着的Elasticsearch实例。[b]集群(cluster)[/b]是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。

你最好找一个合适的名字来替代cluster.name的默认值,比如你自己的名字,这样可以防止一个新启动的节点加入到相同网络中的另一个同名的集群中。

你可以通过修改config/目录下的elasticsearch.yml文件,然后重启ELasticsearch来做到这一点。当Elasticsearch在前台运行,可以使用Ctrl-C快捷键终止,或者你可以调用shutdown API来关闭:


查看Marvel和Sense
如果你安装了Marvel(作为管理和监控的工具),就可以在浏览器里通过以下地址访问它:
http://localhost:9200/_plugin/marvel/

你可以在Marvel中通过点击dashboards,在下拉菜单中访问Sense开发者控制台,或者直接访问以下地址:
http://localhost:9200/_plugin/marvel/sense/ 查看全部
es_install.png

因为ES是java语言编写的程序,所以安装Elasticsearch唯一的要求是安装官方新版的Java下载地址
64位系统java安装脚本如下:
#!/usr/bin/env bash

java_install () {
rpm -qa | grep -i JDK;if [ $? -eq 0 ];then rpm -qa | grep -i JDK | xargs -n 1 -t rpm -e --nodeps;fi
os=$(uname -m)

if [ $os == "x86_64" ];then
cd /usr/local/src/
wget -c http://118.186.221.78:8080/jdk-7u51-linux-x64.gz (ip地址不是有效的,你换成你jdk下载地址就好)
tar zxf jdk-7u51-linux-x64.gz -C /usr/local/

sed -i 's@jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024@#jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024@g' /usr/local/jdk1.7.0_51/jre/lib/security/java.security
ls /usr/bin/java* > /dev/null 2>&1;

if [ $? -eq 0 ];then
ls /usr/bin/java* | xargs -n 1 -t rm -rf
else
ln -s /usr/local/jdk1.7.0_51/bin/java /usr/bin/java
ln -s /usr/local/jdk1.7.0_51/bin/javac /usr/bin/javac
ln -s /usr/local/jdk1.7.0_51/bin/javadoc /usr/bin/javadoc
ln -s /usr/local/jdk1.7.0_51/bin/javaws /usr/bin/javaws
fi

cd /usr/local/jdk1.7.0_51/
echo "export JAVA_HOME=/usr/local/jdk1.7.0_51/" >> /root/.bashrc
source /root/.bashrc
echo "export PATH=$JAVA_HOME/bin:$PATH" >> /root/.bashrc
echo "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /root/.bashrc
source /root/.bashrc
echo "export JAVA_HOME=/usr/local/jdk1.7.0_51/" >> /etc/rc.local
fi

}
java_install
安装开始
你可以从 Downloads | Elasticsearch下载最新版本的Elasticsearch,进行安装:
curl -L -O “http://download.elasticsearch.org/PATH/TO/VERSION.zip”
unzip elasticsearch-$VERSION.zip
cd elasticsearch-$VERSION
Downloads | Elasticsearch 获得最新可用的版本号并填入URL中


在生产环境安装时,除了以上方法,你还可以使用Debian或者RPM安装包,地址在这里:downloads page,或者也可以使用官方提供的Puppet module或者Chef cookbook


安装Marvel
Marvel是Elasticsearch的管理和监控工具,在开发环境下免费使用。它包含了一个叫做Sense的交互式控制台,使用户方便的通过浏览器直接与Elasticsearch进行交互。
 
Elasticsearch线上文档中的很多示例代码都附带一个View in Sense的链接。点击进去,就会在Sense控制台打开相应的实例。安装Marvel不是必须的,但是它可以通过在你本地Elasticsearch集群中运行示例代码而增加与此书的互动性。
Marvel是一个插件,可在Elasticsearch目录中运行以下命令来下载和安装:
./bin/plugin -i elasticsearch/marvel/latest
你可能想要禁用监控,你可以通过以下命令关闭Marvel:
echo 'marvel.agent.enabled: false' >> ./config/elasticsearch.yml
运行Elasticsearch
Elasticsearch已经准备就绪,执行以下命令可在前台启动:
./bin/elasticsearch
如果想在后台以守护进程模式运行,添加-d参数。
 
打开另一个终端进行测试:
curl 'http://localhost:9200/?pretty'
你能看到以下返回信息:
{
"status": 200, //状态码
"name": "Shrunken Bones", //默认集群名称
"version": {
"number": "1.4.0", //ES版本号
"lucene_version": "4.10" //lucene版本号
},
"tagline": "You Know, for Search"
}
这说明你的ELasticsearch集群已经启动并且正常运行,接下来我们可以开始各种实验了。
 
集群和节点
[b]节点(node)[/b]是一个运行着的Elasticsearch实例。[b]集群(cluster)[/b]是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。

你最好找一个合适的名字来替代cluster.name的默认值,比如你自己的名字,这样可以防止一个新启动的节点加入到相同网络中的另一个同名的集群中。

你可以通过修改config/目录下的elasticsearch.yml文件,然后重启ELasticsearch来做到这一点。当Elasticsearch在前台运行,可以使用Ctrl-C快捷键终止,或者你可以调用shutdown API来关闭:


查看Marvel和Sense
如果你安装了Marvel(作为管理和监控的工具),就可以在浏览器里通过以下地址访问它:
http://localhost:9200/_plugin/marvel/

你可以在Marvel中通过点击dashboards,在下拉菜单中访问Sense开发者控制台,或者直接访问以下地址:
http://localhost:9200/_plugin/marvel/sense/

kvm网络桥接,宿主机网络变化,怎么动态修改宿主机里面的ip地址?

回复

OpenSkill 回复了问题 • 1 人关注 • 2 个回复 • 1020 次浏览 • 2015-07-09 14:34 • 来自相关话题

Elasticsearch介绍

OpenSkill 发表了文章 • 0 个评论 • 656 次浏览 • 2015-07-08 22:27 • 来自相关话题

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
 
但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
 
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
 
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
[]分布式的实时文件存储,每个字段都被索引并可被搜索[/][]分布式的实时分析搜索引擎[/][]可以扩展到上百台服务器,处理PB级结构化或非结构化数据[/]
而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。
 
上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。安装即可使用,只需很少的学习既可在生产环境中使用。
 
Elasticsearch在Apache 2 license下许可使用,可以免费下载、使用和修改。
 
随着你对Elasticsearch的理解加深,你可以根据不同的问题领域定制Elasticsearch的高级特性,这一切都是可配置的,并且配置非常灵活。
 
ES诞生模糊记忆:
多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。

直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass”。

后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。

第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目之一,代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticsearch将永远开源且对所有人可用。

Shay的妻子依旧等待着她的食谱搜索…… 查看全部
es.png

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
 
但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
 
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
 
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
    []分布式的实时文件存储,每个字段都被索引并可被搜索[/][]分布式的实时分析搜索引擎[/][]可以扩展到上百台服务器,处理PB级结构化或非结构化数据[/]

而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。
 
上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。安装即可使用,只需很少的学习既可在生产环境中使用。
 
Elasticsearch在Apache 2 license下许可使用,可以免费下载、使用和修改。
 
随着你对Elasticsearch的理解加深,你可以根据不同的问题领域定制Elasticsearch的高级特性,这一切都是可配置的,并且配置非常灵活。
 
ES诞生模糊记忆:
多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。

直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass”。

后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。

第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目之一,代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticsearch将永远开源且对所有人可用。

Shay的妻子依旧等待着她的食谱搜索……

Libvirt的三种CPU配置模式

Ansible 发表了文章 • 0 个评论 • 730 次浏览 • 2015-07-07 23:22 • 来自相关话题

CPU配置模式可以有以下几种模式:​
(1)custom模式<cpu mode='custom' match='exact'>
<modelfallback='allow'>kvm64</model>
...
<featurepolicy='require' name='monitor'/>
</cpu>
 (2)host-model 模式
根据物理CPU的特性,选择一个最靠近的标准CPU型号,如果没有指定CPU模式,默认也是使用这种模式,xml配置文件为:<cpu mode='host-model' />
 (3)host-passthrough 模式
直接将物理CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号,xml配置文件为:<cpu mode='host-passthrough'/>使用host-model看到的VCPU:processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : WestmereE56xx/L56xx/X56xx (Nehalem-C)
...使用host-passthrough看到的VCPU:processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R)Xeon(R) CPU X5650 @ 2.67GHz可以看到,使用host-model模式,Libvir会根据物理CPU的型号,从规定的CPU中选择一种最接近的CPU型号,而使用host-passthrough模式直接看到的就物理CPU的型号。
原文地址 查看全部
kkk.jpg

CPU配置模式可以有以下几种模式:​
1)custom模式
<cpu mode='custom' match='exact'>
<modelfallback='allow'>kvm64</model>
...
<featurepolicy='require' name='monitor'/>
</cpu>

 (2)host-model 模式
根据物理CPU的特性,选择一个最靠近的标准CPU型号,如果没有指定CPU模式,默认也是使用这种模式,xml配置文件为:
<cpu mode='host-model' />

 (3)host-passthrough 模式
直接将物理CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号,xml配置文件为:
<cpu mode='host-passthrough'/>
使用host-model看到的VCPU:
processor       : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : WestmereE56xx/L56xx/X56xx (Nehalem-C)
...
使用host-passthrough看到的VCPU:
processor       : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R)Xeon(R) CPU X5650 @ 2.67GHz
可以看到,使用host-model模式,Libvir会根据物理CPU的型号,从规定的CPU中选择一种最接近的CPU型号,而使用host-passthrough模式直接看到的就物理CPU的型号。
原文地址

在容器内部无法运行内部进程

Ansible 回复了问题 • 1 人关注 • 1 个回复 • 713 次浏览 • 2015-07-02 22:18 • 来自相关话题

启动hadoop时,log中出现:java.io.IOException: NameNode is not formatted.

OpenSkill 回复了问题 • 2 人关注 • 1 个回复 • 1140 次浏览 • 2015-06-29 01:36 • 来自相关话题

为什么“hbase.zookeeper.quorum”必须配奇数个数的DataNode

采菊篱下 回复了问题 • 3 人关注 • 1 个回复 • 1364 次浏览 • 2015-06-29 00:48 • 来自相关话题

docker容器故障致无法启动解决实例

小白菜 发表了文章 • 0 个评论 • 827 次浏览 • 2015-06-24 16:48 • 来自相关话题

内网断电后,有一台机器没有如往常一样起来,该服务器是docke上的一个容器,然后登录docker宿主机,开始问题分析及解决: 一、寻找问题
1、启动iframe-test机器
root@ubuntu:~#docker start iframe-test
iframe-test
2、发现没有容器进程
root@ubuntu:~#docker ps |grep iframe-test
3、查看日志,发现是nginx配置有问题,导致中断。
root@ubuntu:~# docker logs iframe-test

Startingnginx: Starting periodic command scheduler: cron.
nginx:[emerg] unexpected end of file, expecting ";" or "}" in/etc/nginx/nginx.conf:21
nginx:configuration file /etc/nginx/nginx.conf test failed二、思考解决方法
问题原因找到,就是nginx文件检测不通过,导致中断。
解决思路暂有两个:
方法一:把这个问题容器用docker commit提交到一个新的镜像,然后用docker run -i -d基于新镜像运行一个临时终端进去改变配置文件,然后把临时终端的id提交到一个新的镜像,然后在基于新的镜像重新启动容器。(这个方法步骤多,而且提交了新的镜像,对于后续维护增加了复杂性)
方法二:直接改变容器里的配置文件,不需要新提交镜像。三、修改宕机容器配置
所有的容器数据都存在/var/lib/docker/aufs/diff/路径下。下面容器ID目录,以init结尾的是放配置文件的,有/etc/host、reselv.conf,/dev等。另一个是放的文件目录,比如/home,/var/及自己安装的服务等等,aufs需要内核3.10以上的支持。1、查看容器id
root@ubuntu:~#docker ps -a|grep iframe-test
fa02f8084b63 debian06-base:latest 2、查找nginx.conf配置文件路径
root@ubuntu:~#find / -name 'nginx.conf'
/root/nginx.conf
/var/lib/docker/aufs/diff/7c7b3438586e0653cdca7977a4f889cfdca300f008771462f8a2e6e9d3bc5b84/etc/nginx/nginx.conf
/var/lib/docker/aufs/diff/6bc6a9a5aeb59e19cae8bb78daa481cc465051069c7854528cbfdb3c9c1f2bfb/etc/nginx/nginx.conf
/var/lib/docker/aufs/diff/c7b6b87cfda72701229eebca868eb047aa01c255b62e56ad223dc75396c584e4/etc/nginx/nginx.conf
/var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456/etc/nginx/nginx.conf3、进入对应容器id的目录,修改问题文件
root@ubuntu:cd /var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456
执行ls命令,容器的根目录展现在面前,是不是很熟悉?
root@ubuntu:/var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456#ls
etc root run srv tmp usr var
接下来找到这个容器里面nginx.conf的语法错误处修改。4、修改后启动容器
root@ubuntu:~# docker start iframe-test

root@ubuntu:~# docker ps |grep iframe-test
fa02f8084b63 debian06-base:latest "/etc/rc.local" 6 weeks ago Up 13 minutes 10.18.103.2:22->22/tcp,10.18.103.2:80->80/tcp, 10.18.103.2:443->443/tcp,10.18.103.2:3306->3306/tcp, 10.18.103.2:6379->6379/tcp,10.18.103.2:6381->6381/tcp, 10.18.103.2:8000->8000/tcp,10.18.103.2:8888->8888/tcp  iframe-test 容器启动成功,问题解决。 查看全部
内网断电后,有一台机器没有如往常一样起来,该服务器是docke上的一个容器,然后登录docker宿主机,开始问题分析及解决:
 
一、寻找问题
1、启动iframe-test机器
root@ubuntu:~#docker start iframe-test
iframe-test
2、发现没有容器进程
root@ubuntu:~#docker ps |grep iframe-test
3、查看日志,发现是nginx配置有问题,导致中断。
root@ubuntu:~# docker logs iframe-test

Startingnginx: Starting periodic command scheduler: cron.
nginx:[emerg] unexpected end of file, expecting ";" or "}" in/etc/nginx/nginx.conf:21
nginx:configuration file /etc/nginx/nginx.conf test failed
二、思考解决方法
问题原因找到,就是nginx文件检测不通过,导致中断。
解决思路暂有两个:
方法一:把这个问题容器用docker commit提交到一个新的镜像,然后用docker run -i -d基于新镜像运行一个临时终端进去改变配置文件,然后把临时终端的id提交到一个新的镜像,然后在基于新的镜像重新启动容器。(这个方法步骤多,而且提交了新的镜像,对于后续维护增加了复杂性)
方法二:直接改变容器里的配置文件,不需要新提交镜像。
三、修改宕机容器配置
所有的容器数据都存在/var/lib/docker/aufs/diff/路径下。下面容器ID目录,以init结尾的是放配置文件的,有/etc/host、reselv.conf,/dev等。另一个是放的文件目录,比如/home,/var/及自己安装的服务等等,aufs需要内核3.10以上的支持。
1、查看容器id
root@ubuntu:~#docker ps -a|grep iframe-test
fa02f8084b63 debian06-base:latest
2、查找nginx.conf配置文件路径
root@ubuntu:~#find / -name 'nginx.conf'
/root/nginx.conf
/var/lib/docker/aufs/diff/7c7b3438586e0653cdca7977a4f889cfdca300f008771462f8a2e6e9d3bc5b84/etc/nginx/nginx.conf
/var/lib/docker/aufs/diff/6bc6a9a5aeb59e19cae8bb78daa481cc465051069c7854528cbfdb3c9c1f2bfb/etc/nginx/nginx.conf
/var/lib/docker/aufs/diff/c7b6b87cfda72701229eebca868eb047aa01c255b62e56ad223dc75396c584e4/etc/nginx/nginx.conf
/var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456/etc/nginx/nginx.conf
3、进入对应容器id的目录,修改问题文件
root@ubuntu:cd /var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456
执行ls命令,容器的根目录展现在面前,是不是很熟悉?
root@ubuntu:/var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456#ls
etc root run srv tmp usr var
接下来找到这个容器里面nginx.conf的语法错误处修改。
4、修改后启动容器
root@ubuntu:~# docker start iframe-test

root@ubuntu:~# docker ps |grep iframe-test
fa02f8084b63 debian06-base:latest "/etc/rc.local" 6 weeks ago Up 13 minutes 10.18.103.2:22->22/tcp,10.18.103.2:80->80/tcp, 10.18.103.2:443->443/tcp,10.18.103.2:3306->3306/tcp, 10.18.103.2:6379->6379/tcp,10.18.103.2:6381->6381/tcp, 10.18.103.2:8000->8000/tcp,10.18.103.2:8888->8888/tcp  
iframe-test 
容器启动成功,问题解决。

Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization.

Ansible 回复了问题 • 2 人关注 • 1 个回复 • 964 次浏览 • 2015-06-23 15:32 • 来自相关话题