docker学习-1

简介: docker学习-1

docker run流程
创建容器
通过用户指定的镜像名和tag,在TagStore中查找image_id,获取image对象(本地的image json文件里有镜像信息)
检查镜像layer数(不超过127),镜像层数太多会造成性能问题
将runconfig.Config和image.Config合并
创建{Container.ID}-init和Container.ID镜像的目录,在init layer创建.dockerinit、/etc/hosts、/etc/hostname等, Container.ID镜像是read-write layer
将Container对象持久化到path.Join(Container.ID, “config.json”)
在Daemon.idIndex中注册Container.ID,在Daemon.contStore中记录Container.ID和Container对象的映射关系
启动容器
通过Container.ID从Daemon.contStore中获取Container对象
配置容器的dns地址/etc/resolv.conf
将所有祖先镜像挂载到path.Join(graphdriver.root, “mnt”, Container.ID)
初始化容器的hosts文件/etc/hosts
检查主机是否开启cgroup内存限制、swap内存限制、ipv4转发
将容器内挂在目录和宿主机目录的映射关系存入container.Volume
将容器的link信息存入graphdb中,基于sqllite的图模型的数据库
通过iptables开启link容器间的通信,并env化
获取容器运行的当前目录,获取用户指定的环境变量
构建execdriver的Command对象,包括进程命令、Network、Mount、Resources、WorkingDir,用于容器的启动和配置
将Command对象持久化到path.Join(config.root, “execdriver/native/container.json”)
通过execdriver.Run启动Command对象

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