摘要: 首先说明一下在控制台输入 docker start 命令后的主要流程. 阿里云科技快讯送福利啦!
首先说明一下在控制台输入 docker start 命令后的主要流程:
- postContainersStart (api/server/router/container_routes)
- ContainerStart (daemon/start.go)
- GetContainer #根据名字获取景象
- validateState #检查 container 的状态
- daemon.containerStart # 进行请求
- container.Lock() #上锁
- daemon.conditionalMountOnStart
- # 待补充详细过程
- daemon.initializeNetworking #(daemon/container_operations) #初始化网络
http://lzqrush.cn/blog/2018/08/04/DockerStart/#在这里,网络模式有container,host,default模式 在这里, 网络模式有 container,host,default 模式
- if IsContainer #如果网络模式是 container, 需要获取需要加入容器的网络配置
- if IsHost #如果网络模式是 host,hostName 设置成主机名字, 网络配置与宿主机相同
- daemon.createSpec (daemon/oci_linux.go) #应该是设置具体性能配置的, 比如 cpu 速率等
- daemon.getLibcontainerdCreateOptions #得到创建容器的选择, 应该是启动容器时, 需要在容器内执行的命令
- daemon.containerd.Create (libcontainerd/client_daemon) #创建啥玩意
- daemon.containerd.Start (libcontainerd/client_daemon) #启动啥玩意
- container.SetRunning #设置容器的状态为 running
- daemon.setStateCounter #设置 daemon 的计数
- daemon.initHealthMonitor #初始化容器监控
- daemon.LogContainerEvent #日志记录容器启动
参考: 兔子不吃草 http://lzqrush.cn/blog/2018/08/04/DockerStart/
关注微博: 阿里云科技快讯 https://weibo.com/u/6618807396/home , 有阿里云纪念品赠出!
版权声明: 本文内容由互联网用户自发贡献, 版权归作者所有, 本社区不拥有所有权, 也不承担相关法律责任. 如果您发现本社区中有涉嫌抄袭的内容, 欢迎发送邮件至: yqgroup@service.aliyun.com 进行举报, 并提供相关证据, 一经查实, 本社区将立刻删除涉嫌侵权内容.
来源: https://yq.aliyun.com/articles/624157