Docker底层原理及源码分析 Docker 架构
(8) 若以上操作全部正常执行,没有返回错误或异常,则 Docker Client 收到 Docker Server 返回状态之后,发起第二次 HTTP 请求。请求方法为"POST",请求 URL 为"/containers/"+container_ID+"/start"; (9) Docker Server 接受以上 HTTP 请求,并交给 mux.Router,mux.Router 通过 URL 以及请求方法来确定执行该请求的具体 handler; (10)mux.Router 将请求路由分发至相应的 handler,具体为 PostContainersStart; (11) 在 PostContainersStart 这个 handler 之中,名为"start"的 job 被创建,并开始执行; (12) 名为"start"的 job 执行完初步的配置工作后,开始配置与创建网络环境,调用 networkdriver; (13)networkdriver 需要为指定的 Docker 容器创建网络接口设备,并为其分配 IP,port,以及设置防火墙规则,相应的操作转交至 libcontainer 中的 netlink 包来完成; (14)netlink 完成 Docker 容器的网络环境配置与创建; (15) 返回至名为"start"的 job,执行完一些辅助性操作后,job 开始执行用户指令,调用 execdriver; (16)execdriver 被调用,初始化 Docker 容器内部的运行环境,如命名空间,资源控制与隔离,以及用户命令的执行,相应的操作转交至 libcontainer 来完成; (17)libcontainer 被调用,完成 Docker 容器内部的运行环境初始化,并最终执行用户要求启动的命令。 【编辑推荐】
点赞 0 (编辑:温州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |