1. 为什么需要docker
  2. 主流虚拟化技术分析
  3. Docker的安装与部署
  4. Docker的完整架构图

1.为什么需要docker

系统运行环境变更,软件版本升级,操作系统不一致等等问题都会导致本来一个很简单的应用,在不同的机器上会出现各种稀奇古怪的问题。既影响用户体验,也大大加重了开发与运维的成本。所以最先诞生了vm虚拟机,Linux 容器技术(LXC)等虚拟化的技术方案。而 Docker 就是在LXC的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

2.主流的虚拟化技术分析

目前市面较受欢迎的虚拟机以及虚拟化技术主要有KVM、XEN、VMware、docker。下面来简单的描述一下,仅供参考:
VMware :
纯软件模拟一整台计算机,从硬件的底层到操作系统到应用层的一种全虚拟化技术
优势:
在虚拟机操作系统上的应用完全感知不到自己是在虚拟机里,就好像你住在一家宾馆房间里,别人把那个房间设计的跟你自己家一样。所有东西的摆放位置,窗户朝向也都是一样的。跟住家里没有区别。也就意味着无需修改任何代码,直接拎包入住。
劣势:
商业付费软件、
每运行一台虚拟机就相当于多跑了一个操作系统,对设备的性能有很大的考验。
就好像你只想吃青圆子里面的馅,却要先把糯米皮给吃下去,无疑给胃加重了负担。

XEN
Xen通过一种叫做半虚拟化的技术 获得高效能的表现。通过省去了捕获和模拟硬件流程等一大段工作,通过一个接口调用VMM实现对应的处理。需要有硬件辅助虚拟化的支持才可以在windows系统上运行。搭配linux比较友好。

KVM-qemu
KVM全称for Kernel-based virtual machine,意为基于内核的虚拟机。
在虚拟化底层技术上,kvm和vmware后续版本一样,都是基于硬件辅助虚拟化实现。KVM本身基于硬件辅助虚拟化,仅仅实现CPU和内存的虚拟化,但是一台计算机不仅仅有CPU和内存,还需要各种各样的I/O设备,不过KVM不负责这些。经过改造后的QEMU,负责外部设备的虚拟,KVM负责底层执行引擎和内存的虚拟,两者彼此互补,成为新一代云计算虚拟化方案的宠儿。
优势:开源,开源,开源
劣势:kvm技术只能在linux服务器上使用

Docker:
不同于虚拟化技术要完整虚拟化一台计算机,容器技术更像是操作系统层面的虚拟化,它只需要虚拟出一个操作系统环境。通过linux内核的Cgroups技术和namespace技术的支撑,隔离操作系统文件、网络等资源,在原生操作系统上隔离出一个单独的空间,将应用程序至于其中运行,这个空间的形态上类似于一个容器将应用程序包含在其中,故取名容器技术。
优势:轻量化部署服务并且可以高效利用设备的资源。
劣势:共享linux内核导致的安全问题。容器与容器之间并非完全的隔离。

说了这么多分别来看一下各自的结构图

主要差别体现在有无虚拟化硬件这一层。前三种虚拟化技术逃不出这两张图的范畴。


这张是docker的虚拟化结构图,可以理解为是基于内核的一种虚拟化技术。
比起上面的那三种技术,最明显的优势就是启动速度达到毫秒级别,轻量化,具有更快的应用移植和部署能力。又是开源技术,说它真香毫不为过。

Docker的安装与部署

官方下载及安装步骤:https://docs.docker.com/engine/install/centos/

本次演示以Centos7.6 64位为例。root用户省略sudo命令即可。
1.卸载旧版本(第一次安装直接跳过这一步即可)

 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2.设置存储库

sudo yum install -y yum-utilssudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

国内可以添加一下阿里云的仓库,地址如下:
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装 Docker 引擎

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

4.启动 Docker

sudo systemctl start docker

5.从仓库拉取一个名为hello-world的镜像进行引擎测试

 sudo docker run hello-world

6.配置阿里云镜像加速器,加快镜像拉取速度

cd /etc/docker/
vim daemon.json
这个文件里面写入
{"registry-mirrors": ["https://xdvia6p6.mirror.aliyuncs.com"]
}备注:里面这个地址每个阿里云账户都不一样。填写自己实际获得的

阿里云镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

sudo systemctl daemon-reload
sudo systemctl restart docker

7.简单的操作一下

docker version  查看安装好的docker版本

docker images  查看所有已经拉取好的镜像

docker run -it 镜像名   在前台以交互的方式来运行一个容器

Docker的完整架构图

下图为官网提供的docker架构图

下图为Dockerfile构建镜像的流程图

后续docker常用命令、数据卷、以及dockerfile构建镜像等内容,放在下一部分。兄弟们希望你们多多支持,点赞收藏。

Docker 基础入门篇(上)相关推荐

  1. 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...

  2. 经典再现,看到就是赚到。尚硅谷雷神 - SpringBoot 2.x 学习笔记 - 基础入门篇

    SpringBoot 2.x 时代 – 基础入门篇 视频学习地址:https://www.bilibili.com/video/BV1Et411Y7tQ?p=112&spm_id_from=p ...

  3. Python从入门到精通 - 入门篇 (上)

    转载自微信公众号:王的机器 0 引言 微信公众号终于可以插代码了,Python 可以走一波了.首先我承认不是硬核搞 IT 的,太高级的玩法也玩不来,讲讲下面基本的还可以,之后带点机器学习.金融工程和量 ...

  4. linux入门_Linux超详细0基础入门篇(一)

    首先要感谢大康老师对我在Linux操作系统上的教导. 今天来讲一下用途广泛的Linux的基础入门教程 仅仅是做入门使用,如果想更加深入的学习那就需要自己做探索了. 本次例子使用的是kali linux ...

  5. 云小课|DGC数据开发之基础入门篇

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:欢迎来到DGC数据 ...

  6. sqlalchemy mysql教程_SQLAlchemy 教程 —— 基础入门篇

    SQLAlchemy 教程 -- 基础入门篇 一.课程简介 1.1 实验内容 本课程带领大家使用 SQLAlchemy 连接 MySQL 数据库,创建一个博客应用所需要的数据表,并介绍了使用 SQLA ...

  7. JAVA中整型常量的长度,Java基础入门篇(三)——Java常量、变量,

    Java基础入门篇(三)--Java常量.变量, 一.Java常量 (一)什么是常量 常量指的是在程序中固定不变的值,是不能改变的数据.在Java中,常量包括整型常量.浮点型常量.布尔常量.字符常量等 ...

  8. EGE基础入门篇(六):基本图形

    EGE专栏:EGE专栏 上一篇:EGE基础入门篇(五):窗口简单操作 下一篇:EGE基础入门篇(七):组合图形 一.EGE提供的基本图形 EGE绘制图形相关库函数文档 https://xege.org ...

  9. EGE基础入门篇(九):双缓冲与手动渲染

    EGE专栏:EGE专栏 上一篇:EGE基础入门篇(八):清屏与重绘 下一篇: 文章目录 一.双缓冲机制 1. 单缓冲绘图 1.1 单缓冲绘图的缺点 1.2 系统读取帧缓冲 2. 双缓冲绘图 2.1 双 ...

最新文章

  1. 微软和谷歌分别开源分布式深度学习框架,各自厉害在哪?
  2. 建立你的第一个 Git 仓库
  3. (转)javascript 杂谈之哪种写法你更喜欢?
  4. 解决方案仅用于执行startup.bat启动时乱码解决
  5. scala为什么需要函数
  6. kotlin学习笔记——单元测试
  7. XHTML、HTML4,HTML5 之间的区别
  8. Python爬虫-- Scrapy框架
  9. Visual Studio 剪切板新特性
  10. mysql 设置默认值_为什么 Flink 无法实时写入 MySQL?
  11. MySql中的变量定义
  12. [转载]Magento 店铺多语言设置
  13. vue项目使用大华摄像头怎样初始化_海康、大华摄像头chrome高版本实时播放(java集成)...
  14. Mybatis # 和 $ 的区别
  15. 最新彩虹DS仿小储云模板源码
  16. No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration.特殊处理
  17. 用大数据与可视化分析有钱任性的瑞幸咖啡,看它和浑水谁在说谎
  18. 专业动漫库好看的3d动漫推荐(3D动漫排行榜2022)
  19. 统计各个部门对应员工涨幅的次数总和,给出部门编码dept_no、部门名称dept_name以及次数sum
  20. RestTemplateConfig

热门文章

  1. Windows中Java服务怎么打开防火墙
  2. 根据标注精灵助手标好并导出的json文件生成txt文件(一)
  3. 网络自动化:5G时代运营商的核心竞争力
  4. python满分题解:CCF202206-4 光线追踪
  5. html5qq会员开通页面,untitledQQ会员页面导航5.html
  6. utf8mb4 字符集(4字节 UTF-8 Unicode 编码)
  7. vmware虚拟机linux破解密码
  8. 从“卖故事”到“卖人设”,服装品牌如何打造个人IP?
  9. jQuery系列之页面载入
  10. 为什么SAP能够占领国内高端市场?央国企国产化的实际情况是什么?【含详细数据】