写点什么

500 行代码手写 docker 开篇 -goland 远程编译环境配置

  • 2023-05-19
    广东
  • 本文字数:1106 字

    阅读完需:约 4 分钟

500行代码手写docker开篇-goland远程编译环境配置

(1)500 行代码手写 docker 开篇-goland 远程编译环境配置

本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用 go 语言实现一个类似 docker 的容器化功能,最终能够容器化的运行一个进程。

代码最终运行效果


本系列源码已经上传到 github,地址如下:


https://github.com/HobbyBear/tinydocker
复制代码


在开始写代码之前,先介绍下我的实验环境,本地开发环境是 arm64 mac m1,为了能方便的在 linux 上进行调试,我买了一个 amd64 的云 linux 服务器,其实也可以本地搭建一个 linux 虚拟机代。 代码编辑器选择了 goland,并在 goland 配置了远程编译,这样便能在本地编写调试 适合 amd64 linux 环境的代码了。


下面是我配置的详细步骤。

goland 配置

我创建了一个名为 tidydocker 的项目,然后用 goland 打开,进入到 goland 配置界面配置 sftp



配置远程的部署路径,注意我已经在 linux 服务器上提前创建好了 projects 和 tinydocker 目录了。到时候 goland 在寻找部署目录时会根据上一个截图的 root path 和下面截图的 Deployment path 结合起来寻找部署目录。



接着配置 go remote,这样到时候我们便能够远程调试代码。



在接着配置 goland 之前,还需要在远程 linux 机器上部署调试工具。


首先肯定要有 golang 环境


root@ecs-295280:~# go versiongo version go1.20.3 linux/amd64root@ecs-295280:~# 
复制代码


接着安装 dlv 调试工具


 go install github.com/go-delve/delve/cmd/dlv@latest
复制代码


写一个简单 hello world 程序



配置远程编译,编译的选项选择 run on 在我们远程 linux 主机上。



注意编译时候设置-o 参数这样能让我们编译后的文件名称为 tinydocker,不然就是 goland 为我们自动生成的一串很长的文件名。


点击 manager targets 配置编译后的文件输出目录


运行效果

这下配置就算全部完成了,点击编译,goland 便会将代码自动上传到远端,然后执行编译过程。



上一步完成后,登录到远端看看,可以发现已经生成了 tinydocker 的可执行文件


root@ecs-295280:~/projects/tinydocker# lsgo.mod  main.go  ReadMe.md  tinydockerroot@ecs-295280:~/projects/tinydocker# pwd/root/projects/tinydockerroot@ecs-295280:~/projects/tinydocker# 
复制代码


接着远端执行调试命令


root@ecs-295280:~/projects/tinydocker#  dlv exec  tinydocker  --headless --listen=:2345 --api-version=2 --accept-multiclient API server listening at: [::]:23452023-05-02T01:27:04+08:00 warning layer=rpc Listening for remote connections (connections are not authenticated nor encrypted)
复制代码


然后本地 goland 给 hellow world 程序打上断点 执行 remote



可以看到断点已经生效了,这样便配置完成了 goland 的远程编译调试环境。

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2020-09-17 加入

还未添加个人简介

评论

发布
暂无评论
500行代码手写docker开篇-goland远程编译环境配置_Docker_蓝胖子的编程梦_InfoQ写作社区