了解了docker client命令的简单执行过程,再来分析一下docker server的启动过程。
我在上一篇分析docker ps
执行过程的文章里已经提到,docker的每个命令前面的执行过程都是一样的,直到执行到"CmdXXX"
的时候执行具体的命令。启动docker server就是执行docker daemon
命令,其过程也一样。这里我们就直接从CmdDaemon()
方法开始,方法定义在docker/daemon.go
文件中。
首先,还是一张执行流程图:
CmdDaemon()
函数里的代码很长,但其执行过程可以简化为以下步骤:
/*
docker server配置操作
*/
var pfile *pidfile.PIDFile
pf, err := pidfile.New(cli.Pidfile)
pfile = pf
//...
serverConfig := &apiserver.Config{
...}
//