当前位置: 首页 > news >正文

Docker基础篇之入门使用

文章目录

    • 1. Docker的基本组成
    • 2. Docker平台架构
    • 3. 阿里云镜像加速
    • 4. Docker的Hello World入门案例
    • 5. 总结

1. Docker的基本组成

Docker的基本组成主要是有四部分,分别是镜像、容器和仓库。

  • 镜像:Docker镜像就是一个只读的模版,镜像可以用来创建Docker容器,一个镜像可以创建很多容器。它也相当于是一个root文件系统,比如官方镜像centos7就包含了完整的一套centos7的最小系统的root文件系统。镜像又相当于容器的源代码,docker镜像文件类似于java的类模版,而docker容器类似于java中new出来的实例对象。
  • 容器: Docker利用容器独立运行一个或一组应用,应用程序或服务运行在容器中,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例,就像是java中的类和实例对象的关系一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境。另一方面,容器可以看成一个简单的Linux环境和运行在其中的应用程序。
  • 仓库:仓库时集中存放镜像文件的场所。仓库可以分为私有仓库和公开仓库两种形式。Docker Hub就是最大的公有仓库。

在这里插入图片描述
基于前面介绍的docker的三大要素,docker的工作流程可以描述于下:

Docker是一个CS结构的系统,Docker守护进程工作在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器,容器是一个运行时环境,就是我们前面说的集装箱。
在这里插入图片描述

2. Docker平台架构

前面说到,Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。Docker的运行流程如下所示:

  • 首先,用户使用Docker Client于Docker Daemon建立通信,并发送请求给后者
  • Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求
  • Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式存在
  • Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph Driver将下载的镜像以Graph的形式存储
  • 当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境
  • 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成
  • Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是Libcontainer来实现具体对容器进行的操作

在这里插入图片描述

3. 阿里云镜像加速

从阿里云上找到镜像加速地址,如下图所示:
在这里插入图片描述
由于我的机器是m1,所以我这里就演示m1如何配置加速镜像。我的mac上的docker客户端是Docker for Mac。下面演示如何配置镜像:

  1. 首先找到设置中的Docker Engine

在这里插入图片描述

  1. 然后将镜像加速地址配置到registry-mirrors数组中,然后重启就配置完成了

在这里插入图片描述

4. Docker的Hello World入门案例

执行下面命令运行入门程序:

docker run hello-world

运行结果如下所示:
在这里插入图片描述
它的运行原理如下所示:
在这里插入图片描述

5. 总结

再次分析一下前面的核心问题:Docker为什么比传统的虚拟机快?

  • docker有着比虚拟机更少的抽象层

由于Docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的是实际物理机的硬件资源,因此在CPU、内存利用率上docker将会在效率上有明显的优势。

  • docker利用的是宿主机的内核,而不需要加载操作系统OS内核

当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引用寻址、加载操作系统内核返回等比较费费资源的过程,当新建立一个虚拟机时,虚拟机软件需要加载OS,返回新建过程时分钟级别的,而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建立一个docker只需要几秒钟的时间。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 算法课程笔记——高斯消元
  • OrangePi AIpro开箱评测
  • 香港优才计划需要什么条件?一文给你说清2024优才政策、申请利弊及获批攻略
  • C 语言设计模式(结构型)
  • 轻松学EntityFramework Core--前言
  • XGBoost算法详解:机器学习分类中的强力工具
  • 斐讯N1刷OpenWRT并安装内网穿透服务实现远程管理旁路由
  • 融汇11款AI工具构建完美应用
  • TODOLIST
  • 【数据结构】红黑树——领略天才的想法
  • opencv视频抽帧保存图片
  • 云界洞见——基于移动云云数据库MySQL应用实践
  • websocket聊天(全源码)
  • 探索Linux中的神奇工具:探秘tail命令的妙用
  • 【C++/STL】vector(常见接口、模拟实现、迭代器失效)
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • C++入门教程(10):for 语句
  • Docker容器管理
  • eclipse(luna)创建web工程
  • Effective Java 笔记(一)
  • Java反射-动态类加载和重新加载
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • node入门
  • oldjun 检测网站的经验
  • rc-form之最单纯情况
  • Redux 中间件分析
  • spring cloud gateway 源码解析(4)跨域问题处理
  • storm drpc实例
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue脚手架vue-cli
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 将回调地狱按在地上摩擦的Promise
  • 看域名解析域名安全对SEO的影响
  • 通过npm或yarn自动生成vue组件
  • 微信开放平台全网发布【失败】的几点排查方法
  • 携程小程序初体验
  • 学习笔记TF060:图像语音结合,看图说话
  •  一套莫尔斯电报听写、翻译系统
  • 优化 Vue 项目编译文件大小
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 从如何停掉 Promise 链说起
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • $.ajax()
  • (30)数组元素和与数字和的绝对差
  • (C语言)字符分类函数
  • (javascript)再说document.body.scrollTop的使用问题
  • (SERIES12)DM性能优化
  • (超详细)语音信号处理之特征提取
  • (动态规划)5. 最长回文子串 java解决
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (回溯) LeetCode 40. 组合总和II