00:00
大家好,我是男胖子,欢迎收看我的视频,接下来这段时间呢,我会讲解一些关于darker原理类的视频,整个系列的视频呢,会带领大家去实现一个类似darker运行容器的程序,并且呢,让你运行的容器呢,能够去像大cker运行容器一样能够实现,呃。网络的联通,并且在同一个主机上面的容器,它们也是网络联通的,那整个系列的视频,它会涉及到网络命名空间的讲解,然后联合文件系统以及lix虚拟网络设备的知识,这些知识呢,都是构建一个容器所要设计的一些底层知识,然后在正式讲解之前呢,我们先来看一下,就是我们。真正学完整个系列之后,我们需要达到的一个程序是什么样的效果?我是先通过tiny darkcker去运行了一个并办的程序,然后执行了as命令看到的文件系统,这个时候文件系统已经跟主机上面的文件系统已经是隔离的了,然后呢,我们去拼一个百度的IP地址。
01:09
这时候发现已经拼通了,就说明我们的容器网络配置也已经设置好了。这部分的源码呢,这个整个系列的源码我已经上传到了geth,大家感兴趣的话可以自行下载。然后这一节作为手写darkcker系列的开篇,我们会先配置好一个远程编译调试的环境,因为我本地的主机是一个Mac m1的系统,然后我们手写的darkcker代码的最终是要运行到一个LINUX64位的主题上面的,所以我们先在本机上面去,呃,配置好一个远程编译调试的环境,现在让我们来动手实践一下,可以看到我这里是一段简短的在终端去输入hello word的这么一段程序,然后现在我要做的就是将这段程序能够在远程服务器上面去进行编译,并且呢,呃,能够通过远程服务器上面代码,然后在本地去进行调试。首先我要配置的是嗯,我本地代码的一个运行环境,因为我最终要写的这么一个darkcker呢,是适配于LID64芯片的这么一个系统。
02:15
然后本地代码它默认的是我本地主机的一个编译环境,看下RM64的,所以我们先改一下本地代码的一个,呃,引入包之类的,主要看的一个编译环境。然后呢,我们得加上一个编译的一个配置项,通过勾land呢,可以加一个go build编译的配置项,可以看到这里它默认是在我的一个本地主机上,然后我们要改的就是要把它改成我的一个远程主机,通过之前我配置好了一个SSH的一个配置,选择了远程主机,它这里首先会对远程主机进行一个检查,检查主要就是去看你的远程主机上面有没有一个够的环境,有的话他才会通过去进行下一步,那下一步之后呢,首先是我们要修改的一个地方,就是他所指示的,呃,我的项目在远程服务器上面的一个路径,这里是它的一个默认路径,但呃,这里不是我在远程服务器上面真正的一个路径,我登录到了我的远程服务器上面去,然后我们来看一下这远程服务器上面我的一个项目真正的路径是多少,然后把它复制到这里,还改还要改的一个地方呢,就是下面就是我的一个源码的。
03:30
路径,然后我的一个编译的路径。就给它创建好,这样就配置好了,我的一个SSH的一个配置。嗯,然后因为我们是在远程服务器上面去进行编译的,编译完我们不希望把它马上启动起来,所以我们直接去勾选这个。在远程服务器上面去进行编译,好点,OK,这样我们来试一下编译的效果,好,这下就编译完成了,然我们去到远程服务器上面去看一下,可以看到这里的话,它输入了一个go烂默认生成的一个编译文件,然后我们其实是呃,不希望就是go烂的,它以它默认的这种命名方式帮我们生成的,所以我们在编译的时候可以去加上一个配置项。
04:20
这样再编译一下,你看这样的话,它就变成了我们默认命名的泰克的名字了,运行一下发现有hello word,然后这一步仅仅是讲完了一个如何去通过go line去进行远程编译的配置,但是还有一步就是我们要对远程运行的这个代码去进行调试,我们要怎么做,也提供远程调试的一个功能支持,通过选这个go remote,那这里我随便取个名字,然后这里是需要填上远程主机的一个IP地址,我们来看一下远程主机IP地址是多少。
05:00
啊,把它复制到这里,它默认的是使用DLV的调试工具的,所以你得往你的远程服务器上面得装DV这个环境,装D的环境呢也很简单,就通过go store去把DL这个命令装上就行了,就比如我这里我通过执行在远程服器上面,我通过执行DLV这个配置,执行完它就可以装上了,然后这里就我之前已经是装好了的,可以看一下,装好了它就在这了。然后现在我要做的是什么呢?我需要在远程服务器上面去,嗯,执行我的DLDL的一个编译的,嗯,选项配置。就比如我把多摩特这里,我先把这里多瑞特给他配上。好,这里的话,它下面有提示,就是如何在你的远程服务器上面去运行这段代码,我这里给它先配上,然后呢,在你的远程服务器上面要执行,这里我们的代码不叫DEMO,我们的代码是弹cker,所以弹darker,这样执行起来可以发现程序现在就停在这里了,然后我在我的程序上面去打上断点。
06:24
把这个名字命名一下,然后去进行调试,可以发现断点调试已经出现了。我可以正确的停在断点的地方,然执行完之后呢,远程服务器上面它的程序也进行了关闭,注意,因为它监听的这个端口是2345,所以你在呃,远程服务器上面呢,你得把2345这个端口打开才行,这样去完成的远程编译的配置,然后在下一讲我会去讲如何真正的开始去手写一个大程序就是。类似darkcker运行容器的方式,我们会在一个新的命名空间当中去运行一段新的程序,然后去通过一些配置,你会发现,呃,在新的命名空间内部的话,我们会对它的一个呃,文件系统啊,或者是文件系统进行挂载,然后来达到一个资源隔离的目的,好,下期再见。
07:21
呃呃呃呃呃。
我来说两句