首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第五章 Docker源码分析

【docker是一个C/S模式的架构,后端是一个松耦合架构,模块各司其职。

用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。

Docker Daemon作为Docker架构中的主体部分,首先提供Server的功能使其可以接受Docker Client的请求;

Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。

Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动graphdriver将下载镜像以Graph的形式存储;

当需要为Docker创建网络环境时,通过网络管理驱动networkdriver创建并配置Docker容器网络环境;

当需要限制Docker容器运行资源或执行用户指令等操作时,则通过execdriver来完成。

libcontainer是一项独立的容器管理包,networkdriver以及execdriver都是通过libcontainer来实现具体对容器进行的操作。】

5.1 下载源码

Docker的源码是保存在github.com上的,目前已经更名为moby。

5.1.1 fork Docker的源码

首先通过之前注册的github的免费账户登录到github,搜索 moby 的仓库,Docker的源码都保存在github上。通过 Fork 功能到当前登录的用户中,方便以后贡献Docker的代码。如果仅仅只为了阅读源代码,可以直接 clone 官方的代码即可,无需进行 fork 操作。如图 5-1-1所示:

图 5-1-1 Fork docker代码截图

5.1.2 拉取fork的代码

在本地创建一个存储Docker源码的路径,用于提交修改的代码:

librant@ubuntu:~/gowork/src/github.com$ mkdir librant

个人建议将创建的目录与账户名称一致。

拉取刚才fork的分支:

librant@ubuntu:~/gowork/src/github.com/librant$ git clone https://github.com/librant/moby.git

代码下载完成后,进入到 moby 目录,设置本地代码仓跟踪远端仓库的修改:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git remote add upstream https://github.com/moby/moby.git

查询跟踪的远端仓库:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git remote -v

origin https://github.com/librant/moby.git (fetch)

origin https://github.com/librant/moby.git (push)

upstream https://github.com/moby/moby.git (fetch)

upstream https://github.com/moby/moby.git (push)

5.1.3 创建并推送分支

当需要向Docker的源码提交修改后的代码时,就需要在新建的分支上修改,分支的名称可以根据具体的修改命名。

创建需要修改代码的分支:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git checkout -b docker-test

查看创建的分支:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git branch

* docker-test

master

* 号代表当前的分支

创建新的文件:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ touch docker-test.md

查看当前需要提交的文件:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git status

红色字体中的文件是还没有添加到暂存区的文件,根据情况添加需要添加到暂存区的文件:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git add docker-test.md

添加到暂存区的文件将会变成绿色,但是还没有正式提交到分支上,提交到分支上:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git commit -s -m "Test commit file"

-m : 在提交代码时需要写上此次提交的修改的简要信息

-s : 自动签署git的提交,github是不接受匿名提交

将修改推送到github上:

librant@ubuntu:~/gowork/src/github.com/librant/moby$ git push --set-upstream origin docker-test

推送的过程中需要输入github的账号和密码。

推送成功后,在github上就可以查看当前推送成功的分支。

下一篇
举报
领券