centos源码编译docker

安装golang
centos7 直接安装golang
yum install golang
centos6需添加软件源,然后再安装
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
yum install golang

安装依赖包
yum groupinstall 'Development tools'
yum install glibc-static ​sqlite-devel.x86_64 libselinux-static libsepol-static
yum install libuuid-devel libattr-devel zlib-devel libacl-devel e2fsprogs-devel libblkid-devel lzo-devel  asciidoc xmlto

编译device mapper
git clone --no-checkout https://git.fedorahosted.org/git/lvm2.git /usr/local/lvm2 && cd /usr/local/lvm2 && git checkout -q v2_02_103  
#如果下载超时,使用https://github.com/steven676/lvm2.git代替,或直接从https://git.fedorahosted.org/cgit/lvm2.git/refs/tags下载
cd /usr/local/lvm2 && ./configure --enable-static_link && make  && make install
此处要注意别用./configure --enable-static_link && make device-mapper && make install_device-mapper只编译device mapper,这样有可能因为lvm与device mapper不匹配,而导致lvm无法运行,在物理机下次重启时,所有lvm文件系统都不可用,只能重装操作系统了。

编译安装sqlite
wget http://www.sqlite.org/2015/sqlite-autoconf-3080803.tar.gz
./configure
make
make install

安装btrfs-progs
centos7
yum install btrfs-progs
centos6
git clone git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git 
cd btrfs-progs
./autogen.sh 
./configure
make
make install

设置环境变量
export GOPATH=/path/to/go   #docker目录放在/path/to/go/docker
export AUTO_GOPATH=1

编译docker
静态编译
 ./hack/make.sh binary


动态编译docker
./hack/make.sh dynbinary



TroubleShooting

  •  执行lvm --version出错:
lvm: relocation error: lvm: symbol dm_get_status_cache, version Base not defined in file libdevmapper.so.1.02 with link time reference
这是由于之更新了device mapper,没有更新lvm导致,直接运行:
cd /usr/local/lvm2 && ./configure --enable-udev_sync && make && make install

  • 启动docker时报如下警告
 level="warning" msg="WARNING: Udev sync is not supported. This will lead to unexpected behavior, data loss and errors"
原因在于编译device mapper时没有添加对 udev sync的支持,执行如下命令重新编译:
yum install libudev-devel
cd /usr/local/lvm2 && ./configure --enable-udev_sync && make && make install
cd docker && ./hack/make.sh dynbinary  
由于现在udev没有可用静态库,所以只能编译device mapper的动态链接库,也就只能编译动态链接版的docker。

  • centos7编译device mapper出错,错误信息如下,未解决,求助?
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(seusers.o): In function `getseuserbyname':
(.text+0x334): warning: Using 'getgrouplist' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(seusers.o): In function `getseuserbyname':
(.text+0x306): warning: Using 'getgrnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(seusers.o): In function `getseuserbyname':
(.text+0x570): warning: Using 'getpwnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(load_policy.o): In function `selinux_mkload_policy':
(.text+0x302): undefined reference to `lzma_stream_decoder'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(load_policy.o): In function `selinux_mkload_policy':
(.text+0x411): undefined reference to `lzma_code'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(load_policy.o): In function `selinux_mkload_policy':
(.text+0x482): undefined reference to `lzma_end'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(load_policy.o): In function `selinux_mkload_policy':
(.text+0x642): undefined reference to `lzma_end'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(label_file.o): In function `closef':
(.text+0x136): undefined reference to `pcre_free'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(label_file.o): In function `closef':
(.text+0x13f): undefined reference to `pcre_free_study'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(label_file.o): In function `compile_regex.isra.5':
(.text+0x270): undefined reference to `pcre_compile'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(label_file.o): In function `compile_regex.isra.5':
(.text+0x291): undefined reference to `pcre_study'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(label_file.o): In function `lookup':
(.text+0x4fa): undefined reference to `pcre_exec'
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libselinux.a(label_file.o): In function `lookup':
(.text+0x572): undefined reference to `pcre_exec'
collect2: error: ld returned 1 exit status
make[1]: *** [dmsetup.static] Error 1
make[1]: Leaving directory `/root/lvm2-2_02_103/tools'
make: *** [tools.device-mapper] Error 2


  • 静态编译版的docker在启动时出错(动态编译版运行正常),信息如下,未解决,求助。
# /root/go/docker/bundles/1.4.1-dev/binary/docker-1.4.1-dev -H unix:///var/run/docker.sock -H tcp://0.0.0.0:5050 -d -g /home/docker/  --bridge="" --group=""
INFO[0000] +job serveapi(unix:///var/run/docker.sock, tcp://0.0.0.0:5050) 
INFO[0000] WARNING: You are running linux kernel version 2.6.32-431.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0. 
WARN[0000] WARNING: Udev sync is not supported. This will lead to unexpected behavior, data loss and errors 
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) 
INFO[0000] Listening for HTTP on tcp (0.0.0.0:5050)     
INFO[0000] /!\ DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /!\ 
fatal error: unexpected signal during runtime execution
[signal 0xb code=0x1 addr=0x0 pc=0x0]


runtime stack:
runtime: unexpected return pc for runtime.sigpanic called from 0x988759
runtime.throw(0x12bdce5)
/usr/lib/golang/src/pkg/runtime/panic.c:520 +0x69
runtime: unexpected return pc for runtime.sigpanic called from 0x988759
runtime.sigpanic()
/usr/lib/golang/src/pkg/runtime/os_linux.c:222 +0x3d


goroutine 24 [syscall]:
runtime.cgocall(0x402028, 0xc208399038)
/usr/lib/golang/src/pkg/runtime/cgocall.c:143 +0xe5 fp=0xc208399020 sp=0xc208398fd8
github.com/docker/docker/pkg/devicemapper._Cfunc_dm_udev_wait(0x0, 0xc2085970c0)
github.com/docker/docker/pkg/devicemapper/_obj/_cgo_defun.c:257 +0x31 fp=0xc208399038 sp=0xc208399020
github.com/docker/docker/pkg/devicemapper.dmUdevWaitFct(0x0, 0xc208399080)
/root/go/docker/pkg/devicemapper/devmapper_wrapper.go:247 +0x28 fp=0xc208399058 sp=0xc208399038
github.com/docker/docker/pkg/devicemapper.UdevWait(0x0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:287 +0x44 fp=0xc2083990c8 sp=0xc208399058
github.com/docker/docker/pkg/devicemapper.ActivateDevice(0xc208587b90, 0x25, 0xc2083508c0, 0x19, 0x1, 0x280000000, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/pkg/devicemapper/devmapper.go:641 +0x6a9 fp=0xc208399210 sp=0xc2083990c8
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).activateDeviceIfNeeded(0xc208041680, 0xc2080040c0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:429 +0x1d3 fp=0xc2083992a8 sp=0xc208399210
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).setupBaseImage(0xc208041680, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:688 +0x472 fp=0xc208399378 sp=0xc2083992a8
github.com/docker/docker/daemon/graphdriver/devmapper.(*DeviceSet).initDevmapper(0xc208041680, 0x200001, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:1098 +0x1202 fp=0xc2083995e8 sp=0xc208399378
github.com/docker/docker/daemon/graphdriver/devmapper.NewDeviceSet(0xc2080817e0, 0x19, 0xc20000ef01, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go:1688 +0x457 fp=0xc2083997c0 sp=0xc2083995e8
github.com/docker/docker/daemon/graphdriver/devmapper.Init(0xc2080817e0, 0x19, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/graphdriver/devmapper/driver.go:43 +0x16e fp=0xc208399890 sp=0xc2083997c0
github.com/docker/docker/daemon/graphdriver.GetDriver(0xcd1010, 0xc, 0xc20808e6e0, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/graphdriver/driver.go:136 +0x187 fp=0xc208399940 sp=0xc208399890
github.com/docker/docker/daemon/graphdriver.New(0xc20808e6e0, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7ff36b7071b0, 0xc2080019c0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/graphdriver/driver.go:150 +0x2ac fp=0xc208399a98 sp=0xc208399940
github.com/docker/docker/daemon.NewDaemonFromDirectory(0x12dfc40, 0xc2080b7340, 0x0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/daemon.go:861 +0x8b2 fp=0xc208399e18 sp=0xc208399a98
github.com/docker/docker/daemon.NewDaemon(0x12dfc40, 0xc2080b7340, 0x0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/daemon/daemon.go:781 +0x43 fp=0xc208399e58 sp=0xc208399e18
main.func·002()
/root/go/docker/docker/daemon.go:104 +0x46 fp=0xc208399fa8 sp=0xc208399e58
runtime.goexit()
/usr/lib/golang/src/pkg/runtime/proc.c:1445 fp=0xc208399fb0 sp=0xc208399fa8
created by main.mainDaemon
/root/go/docker/docker/daemon.go:127 +0x336


goroutine 16 [chan receive]:
github.com/docker/docker/api/server.ServeApi(0xc20804cb00, 0x7ff36b70c3a8)
/root/go/docker/.gopath/src/github.com/docker/docker/api/server/server.go:1653 +0x473
github.com/docker/docker/engine.(*Job).Run(0xc20804cb00, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/engine/job.go:83 +0x837
main.mainDaemon()
/root/go/docker/docker/daemon.go:142 +0x5ba
main.main()
/root/go/docker/docker/docker.go:73 +0x424


goroutine 19 [finalizer wait]:
runtime.park(0x41a4b0, 0x12dc658, 0x12c3529)
/usr/lib/golang/src/pkg/runtime/proc.c:1369 +0x89
runtime.parkunlock(0x12dc658, 0x12c3529)
/usr/lib/golang/src/pkg/runtime/proc.c:1385 +0x3b
runfinq()
/usr/lib/golang/src/pkg/runtime/mgc0.c:2644 +0xcf
runtime.goexit()
/usr/lib/golang/src/pkg/runtime/proc.c:1445


goroutine 20 [syscall]:
os/signal.loop()
/usr/lib/golang/src/pkg/os/signal/signal_unix.go:21 +0x1e
created by os/signal.init·1
/usr/lib/golang/src/pkg/os/signal/signal_unix.go:27 +0x32


goroutine 17 [syscall]:
runtime.goexit()
/usr/lib/golang/src/pkg/runtime/proc.c:1445


goroutine 23 [chan receive]:
github.com/docker/docker/pkg/signal.func·002()
/root/go/docker/.gopath/src/github.com/docker/docker/pkg/signal/trap.go:30 +0x88
created by github.com/docker/docker/pkg/signal.Trap
/root/go/docker/.gopath/src/github.com/docker/docker/pkg/signal/trap.go:53 +0x28f


goroutine 25 [chan receive]:
github.com/docker/docker/pkg/listenbuffer.(*defaultListener).Accept(0xc20845c320, 0x0, 0x0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/pkg/listenbuffer/buffer.go:43 +0xb3
net/http.(*Server).Serve(0xc208438de0, 0x7ff36b712a28, 0xc20845c320, 0x0, 0x0)
/usr/lib/golang/src/pkg/net/http/server.go:1698 +0x91
github.com/docker/docker/api/server.(*HttpServer).Serve(0xc20845c4a0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/api/server/server.go:51 +0x4c
github.com/docker/docker/api/server.func·006()
/root/go/docker/.gopath/src/github.com/docker/docker/api/server/server.go:1648 +0x267
created by github.com/docker/docker/api/server.ServeApi
/root/go/docker/.gopath/src/github.com/docker/docker/api/server/server.go:1649 +0x3fa


goroutine 26 [chan receive]:
github.com/docker/docker/pkg/listenbuffer.(*defaultListener).Accept(0xc208351bc0, 0x0, 0x0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/pkg/listenbuffer/buffer.go:43 +0xb3
net/http.(*Server).Serve(0xc2080056e0, 0x7ff36b712a28, 0xc208351bc0, 0x0, 0x0)
/usr/lib/golang/src/pkg/net/http/server.go:1698 +0x91
github.com/docker/docker/api/server.(*HttpServer).Serve(0xc208351fa0, 0x0, 0x0)
/root/go/docker/.gopath/src/github.com/docker/docker/api/server/server.go:51 +0x4c
github.com/docker/docker/api/server.func·006()
/root/go/docker/.gopath/src/github.com/docker/docker/api/server/server.go:1648 +0x267
created by github.com/docker/docker/api/server.ServeApi
/root/go/docker/.gopath/src/github.com/docker/docker/api/server/server.go:1649 +0x3fa


参考文献:
http://www.tuicool.com/articles/6VBnQj

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
MRQL is a query processing and optimization system for large-scale, distributed data analysis, built on top of Apache Hadoop, Hama, Spark, and Flink. MRQL (pronounced miracle) is a query processing and optimization system for large-scale, distributed data
前提:你搭建好了hadoop 2.x的linux环境,并能够成功运行。还有就是window能够访问到集群。over 1、 hfds-site.xml 增加属性:关闭集群的权限校验,windows的用户一般与linux的不一样,直接将它关闭掉好了。记住不是core-site.xml 重启集群   property     namedfs.permissions/name     valuefalse/value   /property 2、 hadoop-eclipse-plugin-2.7.0.jar将插
     hadoop一般设置中,一个map或者reduce用到的内存一般设置是1G内存,但作为下载来用,显然是浪费的,一个下载代码用到的内存顶多几十M,而且因为主要耗时是在网络,因此一个cpu可以做几十个下载进程都没啥问题。hadoop一般一个cpu就只跑一个map/reduce.     因此需要对hadoop的设置进行优化,否则就太浪费了。 最核心的设置如下,这里用的是阿里云的云服务器,4G内存,1个cpu作为任务节点。 1 内存 yarn.nodemanager.resource.memory-m

机器学习实战——感知机 - 2015-07-04 08:07:06

感知机 学习策略 具体实现 数据集最大最小规范化 训练过程 测试 最终结果 感知机是二分类的线性分类模型,由Rosenblatt于1957年提出,是 支持向量机 和 神经网络 的基础。感知机将学习到一个线性划分的分离超平面,属于 判别模型 。 感知机 输入空间为 R n 空间, n 是特征数目,输出空间 y = { + 1 , − 1 } 。感知机学习一个如下的符号函数: f ( x ) = s i g n ( w x + b ) 作为模型的判别函数, w 和 b 为模型的权值和偏置。对于超平面 w x

索引更新 - 2015-07-04 08:07:06

Request-Handler (qt) Document Type xml deletequery*:*/query/delete commit/ 提交: Status : success Response: {   "responseHeader": {     "status": 0,     "QTime": 3   } } 数据清理成功: 更新SOLR 数据 [root@itdba nutch]# /u01/nutch/nutch/runtime/local/bin/nutch updatedb

Hadoop之——Java操作HBase - 2015-07-04 08:07:06

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46463617 不多说,直接上代码,大家都懂得 package hbase;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumn

spark实战分享 - 2015-07-04 08:07:04

spark实战分享 http://bbs.superwu.cn/forum.php?mod=viewthreadtid=850fromuid=645 更多精彩内容请关注:http://bbs.superwu.cn 关注超人学院微信二维码:
前言 锵锵,本码农终于拿到了IBM Bluemix虚拟机的试用权了,在这里和大家分享一下~ IBM Bluemix的云虚拟机(Virtual Machine)是号称建立在OpenStack开源云技术上的虚拟机云服务平台。虽然小农我才疏学浅,不知道OpenStack是啥,不过听上去还是挺高大上的赶脚。 好了高大上的屁话不多说,大家看图。 虚拟机的创建 不知道从什么时候开始,在Bluemix Dashboard的最下面就能看到“虚拟机”这一栏目了(如下图)。有次本小农好奇地点了“创建虚拟机”进去并申请了试用权

RPC原理 - 2015-07-03 20:07:15

Remote Procedure Call RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器
Servers Server interface. class novaclient.v2.servers. Server ( manager , info , loaded=False ) Bases: novaclient.openstack.common.apiclient.base.Resource Populate and bind to a manager. Parameters: manager – BaseManager object info – dictionary represent