• docker 开发编译环境搭建


    参与docker开源社区,成为docker项目的contributor,首先要搭建docker的开发编译环境,下面是docker官网介绍的编译环境的搭建,这里做个笔记。docker的编译环境准备非常简单,因为docker官网提供了编译环境的dockerfile,所以只要用这个dockerfile生成docker镜像,即可进行编译:

    一、生成docker编译环境镜像:dockercore/docker

    在docker源代码目录,执行docker build,时间比较长,由于国内众所周知的原因,很多包下载不下来,会编译失败,建议翻-墙或者记录下来缺少的包,手动下载,然后重新docker build,具体过程和踩过得坑如下:

    1. 清除docker中的容器
      确认没运行中的容器,使用docker命令:

      docker ps -a

    如果有运行中的容器和镜像,使用下面的命令可以清空容器
    docker rm $(docker ps -a -q)

    1. 清除系统中的镜像
      确认系统中没有镜像,使用如下命令:

      docker images

      如果存在镜像,使用下面的命令清除:

      docker rmi -f $(docker images -q -a -f dangling=true)

    2. 清除所有镜像和容器,保证环境干净 ,执行docker build 生成编译容器

      make BIND_DIR=. shell

    二、在容器中build docker 源代码

    切换到源代码根目录,执行如下命令:

    sudo docker run -it --rm --privileged --name docker-dev -v $(pwd):/go/src/github.com/docker/docker dockercore/docker /bin/bash
    
    ./hack/make.sh binary
    
    cp bundles/1.12.0-dev/binary-client/docker* /usr/bin/
    cp bundles/1.12.0-dev/binary-daemon/docker* /usr/bin/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    执行命令后,即进入容器,在容器中执行编译命令:

    ./hack/make.sh binary

    编译完成后,复制文件到bin目录,如下:

    root@a8b2885ab900:/go/src/github.com/docker/docker# cp bundles/1.12.0-dev/binary-client/docker* /usr/bin/
    root@a8b2885ab900:/go/src/github.com/docker/docker# cp bundles/1.12.0-dev/binary-daemon/docker* /usr/bin/

    启动容器:

    docker daemon -D&

    测试容器是否正常:

    docker run hello-world

    执行过程抓图如下:
    这里写图片描述

    默认没有设置镜像仓库,可以通过一下代码设置镜像仓库,国内镜像源

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://5162s31v.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三、更改代码,然后重新编译

    试着修改一下代码,打开源代码,找到docekr info 命令,在docker–api–client–system–info.go,修改里面的

    Containers 为 ecloud test Containers:
    如下图所示

    在docker中编译修改后的源代码:执行如下命令:

    docker run -i -t –privileged –rm –name docker-dev -v $(pwd):/go/src/github.com/docker/docker dockercore/docker bash

    ./hack/make.sh binary

    cp bundles/1.12.0-dev/binary-client/docker* /usr/bin/

    cp bundles/1.12.0-dev/binary-daemon/docker* /usr/bin/

    最终效果如下:

  • 相关阅读:
    Python 中元组和列表的根本区别是什么?
    使用Spring Integration接收TCP与UDP请求
    c 摄像头生成yuv未压缩图片
    Android 9.0 屏蔽设备的定位功能
    Python —— excel文件操作(超详细)
    log4net日志使用示例
    前后端分离的项目——图书管理系统(下)
    20 行为型模式-策略模式
    CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!)
    分析日志的一般套路
  • 原文地址:https://blog.csdn.net/m0_67393827/article/details/126327243