体育资讯网

您现在的位置是:首页 > 足球教学 > 正文

足球教学

docker官方源码编译(docker官方文档中文版)

hacker2022-06-27 17:00:22足球教学45
本文目录一览:1、如何在mips架构编译docker之github源码动态编译2、

本文目录一览:

如何在mips架构编译docker之github源码动态编译

经过研究dockerdocker官方源码编译的官方编译脚步,发现本地编译也很简单,只需要在docker源码的目录下执行如下命令即可docker官方源码编译: ./hack/make.sh binary 上面这条命令就只会生成docker的二进制文件,不过肯定不会这么顺利的,执行这个命令你就会发现错误。如果第一次执行...

编译docker怎么运行docker.service

本文根据docker官方给出docker官方源码编译的docker代码编译环境搭建指南做更深入的分析。官方给出的指导比较简单docker官方源码编译,但是由于国内的网络问题经常会编译失败docker官方源码编译docker官方源码编译了解了编译步骤后docker官方源码编译,也可以结合自身遇到的网络问题进行“规避”。 docker的编译环境实际上是创建一个docker容...

如何编译Docker源码

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

./hack/make.sh binary

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

解决go依赖包最直接的方法就一个一个去github或者其docker官方源码编译他地方去下载到本地,但是这样做很麻烦,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下面进行依赖包的下载。通过上面的方法把所有依赖包下载完以后就可以进行编译了。

如何在"特殊"的网络环境下编译 Docker

由于 Docker 编译需要依赖于 Docker Daemon ,所以只能在 64 位的 Linux 环境下先安装 Docker 程序,再从 Github 上克隆 Docker 的代码进行编译。

在 Docker 的目录下执行 make 命令将默认执行 Makefile 中 make binary 指令进行编译。

?

default: binary

all: build

$(DOCKER_RUN_DOCKER) hack/make.sh

binary: build

$(DOCKER_RUN_DOCKER) hack/make.sh binary

cross: build

$(DOCKER_RUN_DOCKER) hack/make.sh binary cross

从以上的 Makefile 可以看出,执行 make、make binary、make all 或 make cross 都可以得到可运行的 Docker 程序。

在 Mac OS 环境下使用 brew 的命令安装 Docker ,只能得到一个 docker client 的二进制程序,如果以 daemon 的方式运行,会得到 ‘This is a client-only binary - running the Docker daemon is not supported.’ 的错误提示信息。

方法 1.

使用 VirtualBox 或者 VMWare Workstation 安装一个 Linux 的虚拟机。宿主机使用 VPN 等方案使网络“正常”访问各种“服务”,虚拟机网卡使用 NAT 模式。在 Linux 虚拟机内使用 make 进行编译 Docker 不会有任何网络问题。只是编译速度受限于 VPN 等网络解决方案,有可能等待时间很长。

方法 2.

Docker 每次发布新版本,都会在 docker-dev 的镜像仓库发布一个新的标签,这个镜像仓库包含了编译 Docker 镜像所依赖的所有环境,只需替换 Docker 代码目录下的 Dockerfile 即可实现编译 Docker 。

?

FROM docker.cn/docker/docker-dev:v1.2.0

VOLUME /var/lib/docker

WORKDIR /go/src/github.com/docker/docker

ENV DOCKER_BUILDTAGS apparmor selinux

ENTRYPOINT [“hack/dind”]

COPY . /go/src/github.com/docker/docker

Dockerfile 中只保留必要的步骤就可以实现编译了。

方法 3.

对 Docker 代码中的 Docker 进行彻底的改造,用国内的各种镜像替换其中不能在“正常”网络条件下访问的镜像,使得代码能够快速编译通过。

?

FROM docker.cn/docker/ubuntu:14.04.1

MAINTAINER Meaglith Ma genedna@gmail.com (@genedna)

RUN echo "deb trusty main universe" /etc/apt/sources.list echo "deb-src trusty main restricted" /etc/apt/sources.list echo "deb trusty-updates main restricted" /etc/apt/sources.list echo "deb-src trusty-updates main restricted" /etc/apt/sources.list echo "deb trusty universe" /etc/apt/sources.list echo "deb-src trusty universe" /etc/apt/sources.list echo "deb trusty-updates universe" /etc/apt/sources.list echo "deb-src trusty-updates universe" /etc/apt/sources.list echo "deb trusty-security main restricted" /etc/apt/sources.list echo "deb-src trusty-security main restricted" /etc/apt/sources.list echo "deb trusty-security universe" /etc/apt/sources.list echo "deb-src trusty-security universe" /etc/apt/sources.list

RUN apt-get update apt-get install -y \

aufs-tools \

automake \

btrfs-tools \

build-essential \

curl \

dpkg-sig \

git \

iptables \

libapparmor-dev \

libcap-dev \

libsqlite3-dev \

lxc=1.0* \

mercurial \

parallel \

reprepro \

ruby1.9.1 \

ruby1.9.1-dev \

s3cmd=1.1.0* \

unzip \

--no-install-recommends

RUN git clone --no-checkout /usr/local/lvm2 cd /usr/local/lvm2 git checkout -q v2_02_103

RUN cd /usr/local/lvm2 ./configure --enable-static_link make device-mapper make install_device-mapper

RUN curl -sSL | tar -v -C /usr/local -xz

ENV PATH /usr/local/go/bin:$PATH

ENV GOPATH /go:/go/src/github.com/docker/docker/vendor

ENV PATH /go/bin:$PATH

RUN cd /usr/local/go/src ./make.bash --no-clean 21

ENV DOCKER_CROSSPLATFORMS \

linux/386 linux/arm \

darwin/amd64 darwin/386 \

freebsd/amd64 freebsd/386 freebsd/arm

ENV GOARM 5

RUN cd /usr/local/go/src bash -xc 'for platform in $DOCKER_CROSSPLATFORMS; do GOOS=${platform%/*} GOARCH=${platform##*/} ./make.bash --no-clean 21; done'

RUN mkdir -p /go/src/github.com/gpmgo \

cd /go/src/github.com/gpmgo \

curl -o gopm.zip \revision=dev --location \

unzip gopm.zip \

mv $(ls | grep "gopm-") gopm \

rm gopm.zip \

cd gopm \

go install

RUN gopm bin -v code.google.com/p/go.tools/cmd/cover

RUN gem sources --remove \

gem sources -a \

gem install --no-rdoc --no-ri fpm --version 1.0.2

RUN gopm bin -v -d /go/bin github.com/cpuguy83/go-md2man@tag:v1

RUN git clone -b buildroot-2014.02 /docker-busybox

RUN /bin/echo -e '[default]\naccess_key=$AWS_ACCESS_KEY\nsecret_key=$AWS_SECRET_KEY' /.s3cfg

RUN git config --global user.email 'docker-dummy@example.com'

RUN groupadd -r docker

RUN useradd --create-home --gid docker unprivilegeduser

VOLUME /var/lib/docker

WORKDIR /go/src/github.com/docker/docker

ENV DOCKER_BUILDTAGS apparmor selinux

ENTRYPOINT ["hack/dind"]

COPY . /go/src/github.com/docker/docker

以上的命令把 Ubuntu 镜像中的源替换为国内速度较快的阿里源;把 lvm2 镜像到国内的 Git 托管服务 coding.net;从 七牛云存储 保存的 Golang 源码进行获取和编译;使用 gopm 下载编译所需要的 Library ;最后把其中 gem 源切换到淘宝。至此,可以在“特殊”的网络条件下快速编译 Docker 。

发表评论

评论列表

  • 澄萌偶亦(2022-06-27 18:21:00)回复取消回复

    本地编译也很简单,只需要在docker源码的目录下执行如下命令即可:./hack/make.sh binary上面这条命令就只会生成docker的二进制文件,不过肯定不会这么顺利的,执行这个命令

  • 拥嬉忆囚(2022-06-27 19:47:08)回复取消回复

    本文目录一览:1、如何在mips架构编译docker之github源码动态编译2、编译docker怎么运行docker.service3、如何编译Docker源码4、如何在"特殊"的网络环境下编译 Docker如何在mips架构编译docker之github源码动态编译[edito