Compilação do código-fonte docker-ce v18.09.2 (simples e fácil de entender 100% de sucesso)

1. Visão Geral:

1.1 Meio Ambiente

As informações da versão são as seguintes:
a. Sistema operacional: centos 7.6, amd64
b, versão docker do servidor: v18.06.0
c, versão git do servidor: 1.8.3.1
d, versão docker compilada alvo: v18.09.2


2 Preparação

2.1 Instale o docker no host

O ambiente de compilação é um contêiner, portanto, você precisa instalar o mecanismo de contêiner no host e executar um contêiner nas etapas subsequentes para compilar o software de destino docker-ce v18.09.2.

yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates
yum install -y docker-ce-18.06.0.ce-3.el7 

mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
      "registry-mirrors": ["https://bxsfpjcb.mirror.aliyuncs.com", "https://registry.docker-cn.com"],
      "max-concurrent-downloads": 10,
      "log-driver": "json-file",
      "log-level": "warn",
      "log-opts": {
          "max-size": "100m",
          "max-file": "3"
      },
       "live-restore": true,
      "exec-opts": ["native.cgroupdriver=systemd"],
      "graph": "/var/lib/docker"
}

EOF
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

2.2 Construir a imagem do ambiente de construção

Leve o Dockerfile no diretório docker-ce / components / engine para o Alibaba Cloud Mirror Service para construir, e a imagem resultante é:

registry.cn-shenzhen.aliyuncs.com/gzlj/docker-build:v18.09.2

3 Processo de compilação:

3.1 Baixe o código-fonte do docker-ce

mkdir -p /opt
cd /opt
git clone -b v18.09.2 https://gitee.com/zjuhunter/docker-ce.git
cd docker-ce/components/engine

Insira a descrição da imagem aqui

3.2 Inicie o contêiner do ambiente de compilação e execute o script de compilação

Atualmente localizado no diretório / opt / docker-ce / components / engine do host, inicie o contêiner do ambiente de compilação, monte o diretório de origem no contêiner, execute o script hack / make.sh no docker-ce e aguarde alguns minutos. A compilação é concluída e, finalmente, vários arquivos binários aparecem no diretório bundles / binary-daemon / no diretório do código-fonte.

docker run \
--rm \
-it \
--privileged \
-v $PWD:/go/src/github.com/docker/docker \
registry.cn-shenzhen.aliyuncs.com/gzlj/docker-build:v18.09.2 \
bash

# 现在已进入容器内部,执行编译脚本
export DOCKER_GITCOMMIT=v18.09.2
hack/make.sh binary

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

4 Resumo:

O projeto docker-ce não usa módulos go para gerenciar dependências. Depois de entrar no ambiente de compilação, não há necessidade de executar nenhuma instrução relacionada a dependências (como go get, etc.). Se o projeto docker-ce for forçado a se tornar um projeto de módulo go, a execução do script de compilação causará erros relacionados à dependência e erros de campo indefinido no código.

Acho que você gosta

Origin blog.csdn.net/nangonghen/article/details/114602755
Recomendado
Clasificación