docker源码包_docker源码包安装 非root启动

hacker|
112

文章目录:

源码包安装的docker 配置文件在哪儿?

V1.12 之后所有配置都可以在 '/etc/docker/daemon.json' 中配置,此文件默认不会自动生成,需要手动创建(touch /etc/docker/daemon.json )。

docker源码多少行

Docker是Docker公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache2.0协议。目前,Docker可以在容器内部快速自动化部署应用,并可以通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率,并且提升诸如IO等方面的性能。

如何编译docker 1.2.0版本的源码

经过研究docker的官方编译脚步,发现本地编译也很简单,只需要在docker源码的目录下执行如下命令即可:

./hack/make.sh binary

上面这条命令就只会生成docker的二进制文件,不过肯定不会这么顺利的,执行这个命令你就会发现错误。如果第一次执行报的错误应该是找不到相应的go依赖包。那么现在就开始解决第一个问题,go依赖包。

解决go依赖包最直接的方法就一个一个去github或者其他地方去下载到本地,但是这样做很麻烦,docker依赖的go语言包很多,然后依赖包可能又依赖其他包。这里有一个简单实用的办法,也是go语言管理项目的方便之处。通过go get命令来自动下载,例如发现报错的是docker某一个目录下的依赖包,那么可以如下执行:

go get -v ./src/github.com/docker/docker/...

这条命令执行以后整个docker目录下源文件依赖的包都会被自动下载。如果发现其他目录下源文件也报同样的错误,可以按照次方法解决。不过这里需要强调一点, 这些下载都是会下载最新的包,如果编译老的docker肯定会出问题 ,如果编译最新的docker代码肯定不会有问题,因为官方的编译是这种方式。

上面执行的命令都是建立在go语言环境建立成功的基础上,我安装的go遇到是1.3.3版本的,采用源码方式安装。安装在/export/servers/go下面,然后所有的go语言工程源码目录放在 /export/servers/gopath。然后配置环境变量在用户的根目录下的.bashrc文件里面如下:

export GOPATH=/export/servers/gopath

export GOROOT=/export/servers/go

export GOARCH=amd64

export GOOS=linux

然后docker的代码目录如下:/export/servers/gopath/src/github.com/docker/docker。这样才能在gopath下面进行依赖包的下载。通过上面的方法把所有依赖包下载完以后就可以进行编译了。

在继续编译的过程中还会遇到缺少c语言依赖包缺少的问题,主要有三个,(1)sqlite3;(2)device-mapper;(3)btrfs.

第一个sqlite3可以使用如下命令安装依赖:yum install sqlite-devel.x86_64

5条大神的评论

  • avatar
    访客 2022-07-10 下午 07:20:00

    儿?V1.12 之后所有配置都可以在 '/etc/docker/daemon.json' 中配置,此文件默认不会自动生成,需要手动创建(touch /etc/dock

  • avatar
    访客 2022-07-10 上午 09:39:19

    文章目录:1、源码包安装的docker 配置文件在哪儿?2、docker源码多少行3、如何编译docker 1.2.0版本的源码源码包安装的docker 配置文件在哪儿?V1.12 之后所有配置都可以在 '/etc/docke

  • avatar
    访客 2022-07-10 上午 08:36:08

    文章目录:1、源码包安装的docker 配置文件在哪儿?2、docker源码多少行3、如何编译docker 1.2.0版本的源码源码包安装的docker 配置文件在哪儿?V1.1

  • avatar
    访客 2022-07-10 下午 05:44:30

    令来自动下载,例如发现报错的是docker某一个目录下的依赖包,那么可以如下执行:go get -v ./src/github.com/docker/docker

  • avatar
    访客 2022-07-10 上午 11:46:46

    找不到相应的go依赖包。那么现在就开始解决第一个问题,go依赖包。解决go依赖包最直接的方法就一个一个去github或者其他地方去下载到本地,但是这样做很麻烦,docker依赖的go语言包很多,然后依赖包可能又依赖其他包。这里有一个简单实用的办法,也是go语言管理项目的方便之处。通过go

发表评论