对于开源项目阅读元源码似乎不可避免。开始网上看了下,有没有相关分析文章。搜了下,发现 孙宏亮写了《Docker源码分析》系列文章,但是是基于docker1.2.0的,而我git的是最新的1.12.1。想来也有参考性,就继续下去。按着《Docker源码分析(二):Docker Client创建与命令执行》,docker客户端和daemon服务端都是通过docker命令启动的,通过不同参数区分启动客户端还是服务端,函数入口在:
./docker/docker/docker.go。但是找了下并不对;说明v1.12.1已经跟1.2.0在main入口已经不一样。后来直接grep下了发现在./docker/cmd/docker/docker.go和./docker/cmd/dockerd/docker.go都有main入口函数。然后编译安装完成后有两个命令docker和dockerd,代表的就是客户端和服务端。找到入口函数,后面再慢慢看吧...
另外,发现dockerd只能本地访问,查了下,找到下面答案:
# vim /etc/default/docker
DOCKER_OPTS="-H unix:///var/run/docker.sock -H 0.0.0.0:8090"
# service docker restart
重启下服务,这样就可以通过8090端口远程访问,同时本地访问也没问题。
docker -H IP:8090 images