首页 > 其他分享 >『中级篇』docker架构和底层技术(12)

『中级篇』docker架构和底层技术(12)

时间:2023-01-06 11:38:06浏览次数:54  
标签:容器 12 架构 集装箱 服务器 docker Docker 底层



11节主要是介绍docker的安装,如果跟这我来学我相信大家已经有了一个docker的安装环境,本次是看下docker的架构和底层的技术,其实随着各位老铁的学习我相信对于docker架构和底层技术会越来越深入的了解,特别是底层技术,后面会边用边给大家介绍底层的linux的技术。

Docker平台

  • Docker提供了一个平台,打包,运行的app的平台
  • 把application和底层的infrastructure(基础建设)隔离开来

『中级篇』docker架构和底层技术(12)_Docker

Docker Engine

  1. 最核心的是 Docker Daemon我们称之为Docker守护进程,也就是Server端,Server端可以部署在远程,也可以部署在本地,因为Server端与客户端(Docker Client)是通过Rest API进行通信。
  2. REST 做过web开发都了解,它的效率杠杠的。
  3. docker CLI 实现容器和镜像的管理,为用户提供统一的操作界面,这个 客户端提供一个只读的镜像,然后通过镜像可以创建一个或者多个容器。(container),这些容器可以只是一个RFS(Root File System),也可以是一个包含了用户应用的RFS。容器在docker Client中只是一个进程,两个进程是互不可见的。用户不能与server直接交互,但可以通过与容器这个桥梁来交互,由于是操作系统级别的虚拟技术,中间的损耗几乎可以不计。
  4. 其实docker就是个C/S的架构,有client和server的。
  • Docker守护进程(dockerd)
  • REST API server
  • CLI接口

『中级篇』docker架构和底层技术(12)_Docker_02

Docker的组织架构

『中级篇』docker架构和底层技术(12)_docker_03

Docker的底层技术支持

容器=cgroup+namespace+rootfs+容器引擎(用户态工具LXC)

  • Cgroup(资源控制)
  • Namespace(访问隔离)
  • rootfs(文件系统隔离)
  • 容器引擎(生命周期控制)

『中级篇』docker架构和底层技术(12)_docker_04

『中级篇』docker架构和底层技术(12)_docker_05

PS:这里面很多底层的技术,说实话,还是感觉不需要那么急着了解这些底层linux的技术,随着咱们慢慢对docker深入认识,里面的技术细节也会展开深入的的说。

Docker瞎扯淡

有初学者还在问,docker都出了这么多课程了,能否通俗易懂的说下,我就在baidu找了一些内容分享出来,文章也是转载的,写的互联网。

首先你有一个 100 平方的房子(服务器),已知你(PHP 应用)需要吃喝拉撒睡觉,所以整个房子划分了卧室、厨房、卫生间等,然后供你一个人享用,但其实挺浪费的,你一个人并不需要 100 平方这么大,可能需要 20 平方(服务器占用 20%)就好了。

后来又来了个别人(Java 应用)也被安排到了这个房子里生活,他也需要吃喝拉撒睡,所以你们挤在了一个床上,用一个卫生间(比如 http 服务器)。如果你改了你的习惯(例如 http 服务配置项)同样会影响别人的生活。

后来又来了人(Node 应用),这时候房东发现房子不够大了,所以搬家(迁移、升级服务器)到另一个 150 平的房子,但是搬家成本好高。由于户型不同(系统版本、环境等)需要装修好久,此外还要把住户(应用代码)搬过来,还需要把住户自定义的习惯都带过来简直麻烦死了。

这时候,房东了解到了一个叫 Docker 的产品。

Docker 是一个可自由伸缩的集装箱房屋:

『中级篇』docker架构和底层技术(12)_服务器_06

这个集装箱房屋虽小但是五脏俱全,而且可以满足一切用户需求,并支持高度自定义,比如 Node 这位住户不需要厨房,那么他的集装箱房子就小一点,当然房租(服务器消耗)也便宜一些。

房东用了 Docker 这个产品之后,发现租房这个事情变简单了:

  • 房东不需要划分卫生间、厨房、卧室并进行装修了,一切由用户自己定制集装箱。房东只需要把集装箱放到房间里即可。
  • 住户也不需要打架了,以前一起付房租(消耗服务器资源),现在按照自己集装箱大小付费。而且你可以在你集装箱里面随便折腾,爱怎么改配置就怎么改,也不会影响到别人。
  • 集装箱对于空间的使用,更加直观,房东可以更轻松了解到当前房间的空间使用率等,以便升级房间。
  • 房东搬新家的时候也开心了,只要把一面墙炸开,把里面一个个集装箱直接移过去新房子就好了,啥也不需要配置,都在集装箱里面呢。

扯完了:

  • 你就是房东,做运维的。房间是服务器,空间大小表示服务器硬件配置。
  • 住户就是你的业务、应用,提供服务的。
  • 伸缩集装箱房屋,就是 Docker 容器,里面是完全分离、独立、自由的环境和业务代码。你可以在里面装一个 Ubuntu(消耗大)或者简版的、可以跑业务代码的环境(消耗低)。
  • Docker 抹平系统差异,相当于把你多个房间都砸成长方形方便存放集装箱。这样你可以快速把独立容器丢到各个配置了 Docker 的不同系统、硬件配置的服务器上面。
  • 因此也可以得到很高的伸缩性,可以瞬间部署很多服务器很多容器,然后负载均衡来提供大促服务等。
  • 当然 Docker 概念、功能不只是我上面说的这些,这些只是我认为比较核心关键的。

开始新的征程

源码的路径:​​https://github.com/limingios/docker.git​

  • 目录结构:

『中级篇』docker架构和底层技术(12)_服务器_07

vagrant plugin install vagrant-vbguest
vagrant reload --provision
vagrant up

『中级篇』docker架构和底层技术(12)_docker_08

『中级篇』docker架构和底层技术(12)_服务器_09

『中级篇』docker架构和底层技术(12)_Docker_10

创建完毕

#进入虚拟机
vagrant ssh
sudo docker version

『中级篇』docker架构和底层技术(12)_服务器_11

『中级篇』docker架构和底层技术(12)_服务器_12

PS:开始实践了,欢迎大家持续关注。

『中级篇』docker架构和底层技术(12)_服务器_13


标签:容器,12,架构,集装箱,服务器,docker,Docker,底层
From: https://blog.51cto.com/u_12040702/5992874

相关文章

  • 『中级篇』docker之wordpress容器SSL(番外篇)(78)
    ache2容器内安装SSL实现wordpress证书安装。前提​​『中级篇』docker容器安装wordpress(37)​​通过上边的方式已经安装了wordpress和mysql,可以正常的访问准备工作进入容......
  • 『中级篇』docker体验阿里云的容器服务(58)
    ​体验下阿里云的容器服务,前提给自己的账号充值100以上啊,大概自己玩一个小时跟去网吧差不多2,3块钱吧!容器服务进入容器服务进入首页:cn.aliyun.com往下拉选择「容器服务」选......
  • 『中级篇』docker之CI/CD持续集成-(终结篇)(77)
    个月的时间,每天的坚持学习和更新收获还是满满的,跟我一起学习的小伙伴不知道你收获到了吗?想说的这几次CI/CD介绍了gitlab,gitlab-ci,docker,所有的工具都是免费的,提供了一个方式......
  • 『高级篇』docker容器来说微服务导学(一)
    gcloud,重点是落地,之前的CICD涉及的面有老铁说最后镜像部署没说,我说高级一定补上的!微服务微服务最近几年比较火,不了解也没关系,可以理解成一个项目的模块吧,微服务运行在docke......
  • 『中级篇』在centos上安装docker(九)
    ​在mac和window上都已经安装了docker,这次咱们在linux系统下安装docker。这次也补充下vagrant如何搜索:Vagrantfile如何搜Vagrantfile之前的课程已经已经完成了在windows/mac......
  • 『中级篇』docker Image概述(13)
    什么是镜像,镜像是怎么产生的,通过这节的学习的Dockercontainer机制要比虚拟机的机制要小巧,原因何在?本节课程的内容是连接12节的,所以肯定跟12节的github有关系:​​https://g......
  • 『中级篇』docker之CI/CD持续集成—GitLab CI服务器(71)
    个人原因,jeakins网上到处都是资料,怼gitlabci更加熟悉。gitlab和gitlab之前集成非常好的,这是不用质疑的。介绍下gitlabci,不弱于jeakins,很多方面比jeakins对gitlab集成更强......
  • 『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)
    ​上次主要说了在githubCI的服务器,并且也演示了github的runner执行CICD,这次通过真实的python项目来演示下CICD。项目通过gitlab和gitlabCI进行CICD。源码地址:​​​https:/......
  • docker部署tomcat
    前置条件:docker已安装,jdk已安装 1、拉取tomcat镜像:dockerpulltomcat:8.52、启动容器:dockerrun-d-p8080:8080--nametomcattomcat3、此时在网站上输入IP:8080......
  • 『中级篇』docker之CI/CD持续集成-整个流程串联(75)
    ython,CIjava,CDpython,这次主要说下从gitlab,gitlab-ci,gitlabCICD的整个从开发流程到发布流程的,一个工作的流程。源码:​​https://github.com/limingios/docker/tree/master/......