这一节我们来稍微了解下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/
相关推荐
【深度学习】clip-interrogator clip docker 容器启动过程
通过自动化与在容器内运行应用程序相关的重复操作(例如重建映像以及停止和启动容器)来简化这些应用程序的开发过程。 您还将学习如何为您的应用程序和容器创建和运行自动化测试。 可以在start/src目录中找到 REST ...
最初是为了学习Docker并学习使用Docker从零开始构建MongoDB部署而实现的 我知道这还有很大的改进空间:) 主要脚本 这是使用Docker容器配置,部署和运行MongoDB的主要脚本。 这里,我们有几个功能可以简化部署过程中...
Compose是用于定义和运行多容器Docker应用程序的工具。 通过Compose,您可以使用YAML文件来配置应用程序的服务。 然后,使用一个命令,就可以从配置中创建并启动所有服务。 要了解有关Compose的所有功能的更多信息...
由于记录的是学习过程,使用的都是目前较高的版本。 python 版本为3.8.3 django 版本为3.0.6 nginx 版本为1.17.10 好了简单的介绍之后,就进入正题了。 创建一个工作目录 创建一个工作目录用来存放项目,和...
最近一直在学习搬运工,感觉这么厉害的东西怎么以前不知道呢,把自己捣鼓的过程整理记录下来,供同学们参考 第零步:从Docker Hub拉取官方mysql镜像 docker pull mysql 然后就是进入漫长的等待,当然如果你配置了...
##下载源码git clonekafka-log-appender:将日志内容写到kafka程序log-kafka-storm:docker-compose脚本和storm程序##准备docker环境###启动dockerdocker-compose环境搭建过程请查看我的进入log-kafka-storm目录,...
使用Docker和Amazon Elastic Container Service(ECS)构建,运行和部署容器化Web应用程序 该实验是一部分,请单击以查看动手实验的完整列表。 :information: 您将在自己的AWS账户中运行此实验。 请按照实验结束时...
MDML 制造数据和机器学习层,阿贡国家实验室安装make build_docker_imagesMDML与每个组件的docker容器一起运行。 可以使用上面的命令构建所有docker容器。 在启动容器之前,必须创建某些环境变量。 要正确设置管理员...
亚哈在Dockerized环境中配置,启动和工作 容器化非常棒,但是项目设置的前期成本和陡峭的学习曲线可能会让您感到痛苦。 Ahab是一个CLI工具,可快速启动此过程,从而避免挫败感而又不会混淆您的工作流程。 在命令行...
构建过程完成后, docker-compose up运行docker-compose up来启动容器。 Jupyter实验室将在127.0.0.1:8888的浏览器中提供。 终端将输出要求的访问令牌,该令牌将被询问以进入内核。 如果Docker都有一个,则...
我们希望简化在不同边缘设备上启动和评估各种深度学习模型的过程。 我们目前为提供模型,不久将发布其他边缘设备(如等)的模型。如何使用Neuralet? Neuralet是一组Docker容器,打包后可以直接在设备上运行。 为每...
09-SSH企业案例_CRM-客户管理系统(6天) ... day02_登录_客户管理模块 day03_客户管理&联系人管理 day04_联系人管理 day05_CRM权限拦截器_SSH纯注解整合 ...13Docker容器操作 14部署应用 15备份与迁移
我们希望简化在不同边缘设备上启动和评估各种深度学习模型的过程。 目前,我们为和带有USB边缘TPU的amd64节点提供模型,并且很快将发布其他边缘设备(如等)的模型。 如果您有任何疑问,请加入或联系 。 如何使用...
9k8s极速入门课程进阶Pod进阶Pd创建过程mp4 10k8s极速入门课程进阶Pod进阶Pod生命周期_mp4 11k8s极速入门课程进阶Pod进阶Pd生命周期Pod启动与终止介绍mp4 12k8s极速入门课程进阶Pod进阶Pod生命周期Pod启动时 Health...
在Docker的系统学习教程中我们了解到使用Dockerfile构建Docker镜像为一个规范的方式,根据Dockerfile可以了解镜像中安装的组件的详细内容。 Dockerfile一般由四部分组成:第一,构建的基础镜像;第二,镜像构建者的...
此存储库包含一个build.sh脚本,该脚本旨在在Amazon Linux docker容器中运行,并构建scikit-learn,numpy和scipy以在AWS Lambda中使用。 有关脚本如何工作以及如何使用的更多信息,请参阅我的 。 此仓库有一个较旧...
精通Selenium WebDriver 3.0,第二版 这是Packt发行的的代码库。... 并学习如何使用Docker容器快速启动Selenium Grid。 在最后的几章中,您将通过一系列场景来演示如何扩展Selenium以使其与外部库和应用程序一起使用,
32、容器化:提供官方docker镜像,并实时更新推送dockerhub,进一步实现产品开箱即用; 33、线程池隔离:调度线程池进行隔离拆分,慢任务自动降级进入"Slow"线程池,避免耗尽调度线程,提高系统稳定性; 34、用户...