Docker Start命令流程分析

首先说明一下在控制台输入docker start命令后的主要流程:

  1. postContainersStart (api/server/router/container_routes)
  2. ContainerStart (daemon/start.go)

    1. GetContainer #根据名字获取景象
    2. validateState #检查container的状态
    3. daemon.containerStart # 进行请求

      1. container.Lock() #上锁
      2. daemon.conditionalMountOnStart

        #待补充详细过程

      3. daemon.initializeNetworking #(daemon/container_operations) #初始化网络

        在这里,网络模式有containerhostdefault模式

        1. if IsContainer #如果网络模式是container,需要获取需要加入容器的网络配置
        2. if IsHost #如果网络模式是host,hostName设置成主机名字,网络配置与宿主机相同
      4. daemon.createSpec (daemon/oci_linux.go) #应该是设置具体性能配置的,比如cpu速率等
      5. daemon.getLibcontainerdCreateOptions #得到创建容器的选择,应该是启动容器时,需要在容器内执行的命令
      6. daemon.containerd.Create (libcontainerd/client_daemon) #创建啥玩意
      7. daemon.containerd.Start (libcontainerd/client_daemon) #启动啥玩意
      8. container.SetRunning #设置容器的状态为running
      9. daemon.setStateCounter #设置daemon的计数
      10. daemon.initHealthMonitor #初始化容器监控
      11. daemon.LogContainerEvent #日志记录容器启动

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值