docker学习 -3

简介: docker学习 -3

Daemon执行流程

创建syncPipe用于跨namespace的通信
execdriver.Run创建一个exec.Cmd对象来执行dockerinit命令
exec.Cmd.Args代表dockerinit的执行参数,native表示execdriver类型,pipe表示同步管道的文件描述符,root表示容器- 配置文件container.json和state.json所在目录,args表示用户指定的命令
Exec.Cmd.SysProcAttr携带需要为进程创建新namespace参数Cloneflags,包括NEWNS、NEWUTS、NEWIPC、NEWPID、NEWNET
调用exec.Cmd.Start()启动dockerinit进程
调用namespaces.SetupCgroups为dockerinit配置cgroup(cpu、iops、memory、freezer)
调用namespaces.InitializeNetworking为dockerinit创建网络栈
调用syncPipe.SendToChild(networkState)将需要dockerinit完成的剩余网络配置发给dockerinit
调用syncPipe.ReadFromChild与dockerinit同步
Dockerinit执行流程

从参数中读取root配置文件所在目录
从path.Join(root, “container.json”)中读取daemon传过来的execdriver.Command对象,获取容器的配置信息
调用mount.InitializeMountNamespace完成挂载资源的初始化,包括rootfs根文件系统,挂载点Volume,设备文件
调用namespaces.FinalizeNamespace完成剩余的配置,包括关闭除0/1/2以外的文件句柄,为容器创建新的用户ID、组ID,切换到工作目录
调用syscall.Exec将容器主进程的执行权交给用户程序

目录
相关文章
|
5月前
|
运维 虚拟化 开发者
Docker-全面详解(学习总结---从入门到深化)
Docker-全面详解(学习总结---从入门到深化)
104 1
|
5月前
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
248 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
6天前
|
存储 Ubuntu Linux
学习docker
学习docker
17 1
|
8天前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
64 3
|
11天前
|
运维 Kubernetes 开发者
Docker Swarm学习
【10月更文挑战第5天】
21 3
|
15天前
|
Kubernetes Linux 持续交付
docker容器学习
【10月更文挑战第1天】
28 1
|
1月前
|
存储 Ubuntu Docker
Docker学习
Docker学习
58 4
|
20天前
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
|
20天前
|
Shell 应用服务中间件 nginx
docker学习--最详细的docker run 各子命令解释与应用
`docker run` 是 Docker 中用于启动容器的基本命令。常用子命令包括 `-i`(交互模式)、`-t`(分配终端)、`-d`(后台运行)、`-p`(端口映射)、`--name`(指定容器名)。例如,`docker run -it nginx:1.20 /bin/bash` 可以创建并进入交互式容器。使用 `-d` 可在后台运行容器,`-p` 可将容器端口映射到主机端口,`--name` 则用于自定义容器名称以便管理。
|
2月前
|
网络协议 Shell Docker
docker 学习之路
docker 学习之路
31 1