前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第五章 Docker源码分析

第五章 Docker源码分析

原创
作者头像
Librant
修改2019-01-16 22:40:11
2.4K0
修改2019-01-16 22:40:11
举报
文章被收录于专栏:跟我一起学 K8s跟我一起学 K8s

【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-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上就可以查看当前推送成功的分支。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5.1 下载源码
    • 5.1.1 fork Docker的源码
      • 5.1.2 拉取fork的代码
        • 5.1.3 创建并推送分支
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档