docker学习 容器的启动过程
这一节我们来稍微了解下docker原理性的东西
1
docker run -i -t ubuntu /bin/bash
输入上面这行命令,启动一个ubuntu容器时,到底发生了什么?
大致过程可以用下图描述:
首先系统要有一个docker daemon的后台进程在运行,当刚才这行命令敲下时,
1. docker client(即:docker终端命令行)会调用docker daemon请求启动一个容器,
2. docker daemon会向host os(即:linux)请求创建容器
3. linux会创建一个空的容器(可以简单理解为:一个未安装操作系统的裸机,只有虚拟出来的CPU、内存等硬件资源)
4. docker daemon请检查本机是否存在docker镜像文件(可以简单理解为操作系统安装光盘),如果有,则加载到容器中(即:光盘插入裸机,准备安装操作系统)
5. 将镜像文件加载到容器中(即:裸机上安装好了操作系统,不再是裸机状态)
最后,我们就得到了一个ubuntu的虚拟机,然后就可以进行各种操作了。
如果在第4步检查本机镜像文件时,发现文件不存在,则会到默认的docker镜像注册机构(即:docker hub网站)去联网下载,下载回来后,再进行装载到容器的动作,即下图所示
另外官网有一张图也很形象的描述了这个过程:
参考文章:
https://www.gitbook.com/book/joshhu/docker_theory_install/details
https://docs.docker.com/engine/introduction/understanding-docker/
docker学习 容器的启动过程的更多相关文章
- Spring源码系列——容器的启动过程(一)
一. 前言 Spring家族特别庞大,对于开发人员而言,要想全面征服Spring家族,得花费不少的力气.俗话说,打蛇打七寸,那么Spring家族的"七寸"是什么呢?我心目中的答案一 ...
- Servlet容器的启动过程
[http://book.51cto.com/art/201408/448854.htm] Tomcat的启动逻辑是基于观察者模式设计的,所有的容器都会继承Lifecycle接口,它管理着容器的整 ...
- SpringBoot:Spring容器的启动过程
一.简述 Spring的启动过程就是IoC容器的启动过程,本质上就是创建和初始化Bean的工厂(BeanFactory),BeanFactory是整个SpringIoC的核心,Spring使用Bean ...
- spring容器的启动过程
spring的启动过程: 首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环 ...
- Flask学习-Flask app启动过程
因为0.1版本整体代码大概只有350行,比较简单.所以本篇文章会以Flask 0.1版本源码为基础进行剖析Flask应用的启动过程. Flask参考资料flask,官网有一个最简单app: from ...
- tiny4412学习之u-boot启动过程
这个文档简要分析了tiny4412自带的u-boot的启动过程,这个u-boot启用了mmu,并且命令的接收和执行方式跟以前的不同. 文档下载地址: http://pan.baidu.com/s/1s ...
- Oracle学习笔记--Oracle启动过程归纳整理
Oracle 启动过程分为nomount状态mount状态open状态 每个状态下Oracle都会进行不同的操作:1.nomount状态 在$ORACLE_HOME/dbs目录下寻找参数文件 参数文件 ...
- docker学习(3) 容器的启动过程
这一节我们来稍微了解下docker原理性的东西 docker run -i -t ubuntu /bin/bash 输入上面这行命令,启动一个ubuntu容器时,到底发生了什么? 大致过程可以用下图描 ...
- Hadoop学习1--解决启动过程中的问题
方法:http://www.aboutyun.com/thread-12694-1-1.html http://www.linuxidc.com/topicnews.aspx?tid=13 http: ...
- MySQL学习笔记——MySQL启动过程(一)
首先去官网或者github下载MySQL5.7的源码. 官网地址:https://dev.mysql.com/downloads/mysql/ github地址:https://github.com/ ...
随机推荐
- 解决 raw.githubusercontent.com 无法访问的问题
解决 raw.githubusercontent.com 无法访问的问题 电信默认 DNS 直接遮蔽 github DNS 1: 61.139.2.69 DNS 2: 218.6.200.139 C: ...
- 基于源码分析 SHOW GLOBAL STATUS 的实现原理
问题 在 MySQL 中,查询全局状态变量的方式一般有两种:SHOW GLOBAL STATUS和performance_schema.global_status. 但不知道大家注意到没有,perfo ...
- ABAP配置:OY01 定义国家/地区
配置:OY01 定义国家/地区 事务代码:OY01 配置路径: SPRO-ABAP平台-常规设置-设置国家-定义国家/地区 配置路径截图: 配置描述: 国家是SAP里面一个非常重要的概念,SAP国家概 ...
- SpringBoot的两种启动方式原理
使用内置tomcat启动 配置案例 启动方式 IDEA中main函数启动 mvn springboot-run java -jar XXX.jar 使用这种方式时,为保证服务在后台运行,会使用nohu ...
- dart中Map类型详解
Map是什么 map类型的数据都是由key和value两个值组成, key是唯一的,value不必唯一,读写数据都是通过key进行. key和value可以是任意类型数据. Map的基本使用 01== ...
- java中的文件流File
数据 + 流(转)操作 IO I表示的是:输入Input O表示的是:Output Stream表示流转 java中的管道不止一个.并且管道有可能不是一样的. 有的管道粗有的管道细 File的常用方法 ...
- 一种面向混合云平台基于LSTM预测模型的资源池配额方法。
本文分享自天翼云开发者社区<一种面向混合云平台基于LSTM预测模型的资源池配额方法.>,作者:l****n 基于用户的历史配额申请情况和实际资源使用情况组成数据集搭建LSTM时序预测模型. ...
- API网关-APISIX简介
本文分享自天翼云开发者社区<API网关-APISIX简介>,作者:w****n Apache APISIX 是一个动态.实时.高性能的云原生 API 网关,提供了负载均衡.动态上游.灰度发 ...
- 使用iceberg-flink读取iceberg v2表
一.背景 mysql数据入湖后,有同事需要实时抽取iceberg v2表,想通过iceberg做分钟级实时数仓.目前flink社区暂不支持读取v2表.腾讯内部支持 目前只能用Oceanus内置conn ...
- Java开发自学第一天
Java学习日志 Day 01|2025/2/11|累计1天 今日学习时长 6小时 当日学习目标 1.了解JVM.JDK.JRE 2.学习Idea开发工具的基本使用 3.基本语法:运算符.数据类型.变 ...