• 搭建docke-cli的调试环境


    搭建docke的调试环境
    在搭建docker的调试环境时,踩了些坑,这里总结了一个比较顺利的方式,供大家参考。共分为两个部分,分别为:docker-cli的调式环境和 moby(docker-server)的调试环境。

    docker-cli调试环境

    我使用的是VMware16.2.4安装得centos7.9.2009的操作系统,编译器用的VScode,go的版本为1.18, docker-cli的版本为1.20.10。

    1. 安装go开发环境

    这里安装go开发环境使用的是g 版本管理工具,具体的安装过程请参考:https://github.com/voidint/g 。

    安装完之后,切换为1.18 版本。

    2. 修改部分go 环境变量

    关闭了go mod ,因为docker-cli项目,没有使用go mod管理

    修改GO_PROXY为七牛云的

    GOPATH 保持默认的不变,如果要修改也可以,之后后面创建目录的时候,也要一并修改。

    go env -w GO111MODULE="off"
    go env -w GOPROXY="https://goproxy.cn,direct"
    
    • 1
    • 2

    在这里插入图片描述

    3. 创建目录

    在GOPATH创建如下的目录:

    在这里插入图片描述

    mkdir -p /root/go/src/github.com/docker    # 如果GOPATH有修改,此处路径也要做相应修改
    
    • 1

    4.下载代码

    在GOPATH中下载代码,并切换至目标分支

    cd /root/go/src/github.com/docker 
    git clone https://github.com/docker/cli.git
    cd cli
    git checkout -b origin/20.10 remotes/origin/20.10
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    5. 配置VScode

    通过 SSH remote 插件打开代码以后(相信如果你能查到这个文档,自然会使用该插件)

    1. 先自动创建 launch.json

    在这里插入图片描述

    在这里插入图片描述

    1. 并将 launch.json内容修改为如下:

    其中 program字段,设置为docker.go 文件的路径。

    args字段,可以执行调整为自己感兴趣的docker命令,不必含有docker,直接填写根命令就行。

    在这里插入图片描述

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Launch Package",
                "type": "go",
                "request": "launch",
                "mode": "debug",
                "program": "/root/go/src/github.com/docker/cli/cmd/docker/docker.go",
                "env": {},
                "args": ["ps","-a"]
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    点击开始调试
    在这里插入图片描述

    如果出现如下的信息,则说明成功了。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GaBJiINO-1668090505560)(新建 Markdown.assets/image-20221110222440998.png)]

    moby(docker-server) 调试环境

    moby与docker的关系就不用说了。基于docker-cli的调试环境,可以很容易的搭建moby的调试环境。

    1. 先安装必要的依赖包

    yum install device-mapper-devel
    yum install btrfs-progs.x86_64 btrfs-progs-devel.x86_64 libblockdev-btrfs.x86_64 libblockdev-btrfs-devel.x86_64 -y
    
    • 1
    • 2

    2. 下载代码

    cd /root/go/src/github.com/docker 
    git  clone  https://github.com/moby/moby
    mv moby docker
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3. 将原来已经安装的docker 停掉

    systemctl stop docker
    
    • 1

    4. 修改 launch.json

    launch.json内容修改为如下: 主要是program改为入口路径

    "version": "0.2.0",
        "configurations": [
            {
                "name": "Launch Package",
                "type": "go",
                "request": "launch",
                "mode": "debug",
                "program": "/root/go/src/github.com/docker/docker/cmd/dockerd/",
                "env": {},
                "args": []
            }
        ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    java健康饮食信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    go数组后添加元素
    Spark杂谈
    Go 语言 设计模式-适配器模式
    理解Rust的生命周期就是理解了Rust
    【Proteus仿真】【51单片机】智能雨刷器设计
    数仓的字符截取三胞胎:substrb、substr、substring
    三款Github Copilot的免费替代
    2022-08-04 Brighthouse: An Analytic DataWarehouse for Ad-hoc Queries
    LeetCode算法心得——连续数组(前缀和+HashMap)
  • 原文地址:https://blog.csdn.net/hg_zhh/article/details/127797712