这片博文属于Github操作经验及技巧的记录,通过向github提交docker源码的研究纪录一点github操作的技巧和经验,这对以后对个人github上代码的管理和提交也很有帮助,适用于一些github初学者,做一些简单的代码管理。(通过这段时间博文的不断更新,本小博主发现越来越喜欢更新博文了,虽然这样会拖慢学习进度,但实际上从长远看来,对于个人的学习仓库的建立还是很有帮助的,而从短时间来看,将博文和研究学习结合在一起,非常有助于整理思路和积累技巧,当我在研究过程中需要使用工具,或者有一点自己的整体框架上的思考,博文的纪录会给我一种非常安心的感觉,就像这些学习到的知识确确实实的被我占有了一样,好了,废话不多说,先完成这篇博文的编写吧)
我先从整体上整理一下我这篇博文需要纪录的操作过程:
1.安装好所需要的软件及工具
2.为提交代码配置git工具
3.提交代码所需的一些常用git命令操作
4.与docker相关的操作,删除容器,启动容器,修改源码,运行测试用例(单元测试,集成测试等)
一.安装所需的软件及工具
(1)注册一个github账号。这里自行注册
(2)安装git命令,sudo apt-get install git
(3) 安装make命令,sudo apt-get install make
(4)安装或升级Docker,Docker的安装自行去Docker官网上去一步步安装,我的安装过程如下:
二. 为提交代码配置git工具
(1)为Docker源码在github上创建分支(fork)并将源码下载(clone)到本地
创建分支:首先打开浏览器登录github帐号,然后进入docker/docker仓库进入如下页面,点击一下Fork按钮:
之后在你的github账户下就有一个docker的分支目录YourAccount/docker ,即docker源码,随后复制该fork分支的clone Url如下
再通过如下命令行顺序将docker源码copy到本地来:
cd ~
mkdir repos
cd repos
git clone +(你之前复制的分支Url)
cd docker-fork
恭喜你成功进入docker_fork源码目录了~
(2)设置你的git签名信息用于远程提交代码
当你想要修改你的分支中的源码的时候,你希望能和其他人在docker/docker这个仓库中所作的修改和变动同步,为了使得同步更简单,你也会添加一个远程命令upstream指向docker/docker ,由于Docker不接受任何匿名的代码提交,所以我们需要配置名称和邮箱等个人信息。
cd docker-fork
git config --local user.name "FirstName LastName "
git config --local user.email "[email protected]"
git remote add upstream https://github.com/docker/docker.git //设置本地仓库跟踪源码主线的改动
检查设置完毕的信息:
(3)创建分支并将这个分支提交
cd docker-fork
git checkout -b dry-run-test //创建一个目录并进入到这个目录
git branch //验证你是否在这个分支里面
*dry-run-test //*表示正在该目录分支下
master
touch TEST.md //在该分支创建一个文件,然后在这个文件通过vim工具随便写点内容,然后保存退出
git status //检查分支状态如下图
On branch dry-run-test
Untracked files:
(use "git add
TEST.md
nothing added to commit but untracked files present (use "git add" to track)
git add TEST.md //阶段性的添加,还没有真正提交
git commit -s -m "your message about your changes" // 填写提交代码改动的相关备注
最后一步提交代码:
操作完成后即可在你的github账户中的docker-fork目录下查找dry-run-test目录及该目录下的TEST.md文件,即提交成功。
三.启动开发环境的容器并尝试修改源码
(1)先删除原有的容器和镜像
docker rm $(docker ps -a -q)//删除
docker images//验证
(2)运行一个开发环境下的容器
cd ~/repos/docker-fork
git checkout dry-run-test //确保我在dry-run-test分支下
make BIND_DIR=.shell //使用make命令构建一个开发环境镜像并将它运行在一个容器当中
docker run --rm -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "home/ubuntu/repos/docker/bundles:/go/src/github.com/docker/docker/bundles" -t "docker-dev:dry-run-test" bash
//这个命令就是在dry-run-test目录下构建一个镜像并运行该容器,并且该容器内部安装有docker
该命令执行后,我们会进入该容器环境目录如下
root@f31fa223770f:/go/src/github.com/docker/docker#
通过ls命令我们依然可以看到docker源码目录,然后编译docker命令二进制文件,并将该二进制文件cp到usr/bin/目录下。
将上述容器环境的目录下执行:
hack/make.sh binary
cp bundles/1.12.0-dev/binary-client/docker* /usr/bin/
cp bundles/1.12.0-dev/binary-daemon/docker* /usr/bin/
现在就可以直接使用docker命令了
docker daemon -D& //-D表示debug模式,&表示后台运行
hack/make.sh binary install-binary run // 这个命令会使得run这个命令自动执行build ,install,run三个命令
docker run hello-world 成功运行即可
(3)尝试修改docker源码
到这里你已经成功在docker-fork/dry-run-test目录下构建了一个开发环境的容器,并且该容器里面运行着docker,含有docker源码,并可以执行docker的二进制命令文件。
当我们在docker-fork目录下所做的docker源码的修改,想要它与开发环境容器中的docker源码同步并运行测试,需要经历以下几步:
首先我们要确定我们在docker-fork目录环境下
make shell //这是将我本地的docker源码仓库(也就是docker-fork)挂载到开发环境docker容器中
打开
cli/command/container/attach.go文件
做如下修改:
flags.BoolVar(&opts.noStdin, "no-stdin", false, "Do not attach STDIN")
|修改为下面的内容
flags.BoolVar(&opts.noStdin, "no-stdin", false, "Do not attach STDIN (standard in)")
保存退出后执行
进入我们的开发环境的容器重新编译docker二进制文件:
hack/make.sh binary
cp bundles/1.12.0-dev/binary-client/docker* /usr/bin/
cp bundles/1.12.0-dev/binary-daemon/docker* /usr/bin/
然后执行docker attach --help就会出现如下信息
至此我们已经可以成功的创建github环境的配置及代码提交操作包括docker源码的修改测试等全部流程,此后,我们再慢慢阅读docker源码,尝试根据自己的需求去做特定的修改,然后提交至github,为docker开源社区做出我们的贡献~