CentOS Source compiled Docker

Source: Internet
Author: User
centos7 install golang directly
yum install golang
centos6 need to add software source, and then install
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
yum install golang

Install dependencies
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

Compile 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
#If the download times out, use https://github.com/steven676/lvm2.git instead, or download directly from https://git.fedorahosted.org/cgit/lvm2.git/refs/tags
cd / usr / local / lvm2 && ./configure --enable-static_link && make && make install
Don't use it here. / Configure --enable-static_link && make device-mapper && make install_device-mapper only compiles the device mapper, this may cause lvm to not run because of a mismatch between lvm and device mapper, under the physical machine During the second restart, all lvm file systems are unavailable, and the operating system can only be reinstalled.


Compile and install sqlite
wget http://www.sqlite.org/2015/sqlite-autoconf-3080803.tar.gz
<div style = "word-wrap: break-word; font-family: Microsoft Yahei, 'Microsoft Yahei', 'Helvetica Neue', 'Hiragino Sans GB', Arial, simsun, bold, Arial, sans-serif; font -size: 16px; line-height: 24px; "> ./ configure </ div> <div style =" word-wrap: break-word; font-family: Microsoft Yahei, 'Microsoft Yahei', 'Helvetica Neue' , 'Hiragino Sans GB', Arial, simsun, bold, Arial, sans-serif; font-size: 16px; line-height: 24px; "> make install </ div>

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

Set environment variables
export GOPATH = / path / to / go #The docker directory is placed in <span style = "font-family: Microsoft Yahei, 'Microsoft Yahei', 'Helvetica Neue', 'Hiragino Sans GB', Song Dynasty, simsun, black body, Arial , sans-serif; "> / path / to / go / docker </ span>
export AUTO_GOPATH = 1

Statically compile docker
<pre name = "code" class = "plain"> <span style = "font-family: Microsoft Yahei, 'Microsoft Yahei', 'Helvetica Neue', 'Hiragino Sans GB', Arial, simsun, black body, Arial, sans-serif; "> ./hack/make.sh binary </ span>

Dynamically compile docker
<span style = "font-family: Microsoft Yahei, 'Microsoft Yahei', 'Helvetica Neue', 'Hiragino Sans GB', Arial, simsun, bold, Arial, sans-serif;"> ./hack/make.sh dynbinary </ span>

TroubleShooting
 Error in executing 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
This is because the device mapper has been updated, and the lvm has not been updated. Run directly:
cd / usr / local / lvm2 && ./configure --enable-udev_sync && make && make install

The following warning is reported when starting docker
 level = "warning" msg = "WARNING: Udev sync is not supported. This will lead to unexpected behavior, data loss and errors"
The reason is that no support for udev sync was added when compiling the device mapper, execute the following command to recompile:
yum install libudev-devel
cd / usr / local / lvm2 && ./configure --enable-udev_sync && make && make install
cd docker && ./hack/make.sh dynbinary
Since there is no static library available for udev, only the dynamic link library of device mapper can be compiled, and only the dynamic link version of docker can be compiled.

CentOS7 compiled device mapper error, the error message is as follows, unresolved, help?
/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): I

n 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


The static compiled version of docker has an error during startup (the dynamic compiled version runs normally), the information is as follows, unresolved, please help.
# /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] /! \ DO N‘T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DO N‘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 / p
kg / 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


References: http://www.tuicool.com/articles/6VBnQj

Centos source code compilation docker

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.