Docker从入门到精通(一)——初识

1、Docker 是什么?
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
2、Docker 为什么会出现?
①、一次构建,到处运行
一个项目,从开发-上线,开发人员需要在本机进行开发,运维人员将打包的服务部署上线,涉及到操作系统变更,应用配置变更,很常见的一种情况是:
我本地运行的好好的,怎么到你那就不行了呢?
进而衍生出:
项目可以带环境安装吗?也就是部署的时候,可以把原始环境一起打包复制过来。
Docker 便能干这个事,通过 Docker 打包镜像发布测试,提供了一个标准化的解决方案,再也不用担心因为环境不一致而导致的服务部署问题。
②、更高效的计算资源利用
我们部署项目,发展历程如下:
一、物理机时代

部署一个服务,会粗略估计服务所需要的机器性能,然后去采购对应的真实物理机器,然后在该机器上安装服务需要的一些软件,比如服务器Tomcat,数据库MySQL等等。
物理机时代还是有很多缺点的:
1、部署非常慢:采购机器,安装系统,安装软件等等;
2、成本高以及资源浪费:通常为了以防服务性能不够,我们都会尽量采购比预期资源高一点的机器,不仅会增加成本,还会造成机器资源浪费;
3、难于扩展与迁移:由于是真实的物理机,扩展或者迁移会比较麻烦;
二、虚拟机时代

VMware 相信大家都玩过,通过VMware 我们能在自己电脑上创建很多虚拟机器,而物理机时代就是在一台真实物理机上,虚拟出多台机器,而且每台机器都可以看做是一台独立的电脑。
相对于物理机时代,虚拟机能够在一台机器上创建多台机器,能够充分利用资源,并且也做到了机器之间的隔离,机器性能不够用了,也可以通过 Hypervisor 随时进行扩展。
但是也有个缺点,我们每一台虚拟机都要独立安装操作系统,大家知道操作系统其实也是比较占用性能的,有多少台虚拟机,我们就得多安装多少个操作系统,这样就浪费了很多资源,那么怎么解决呢?
三、容器化时代

容器类似于 VM,但是它们具有被放宽的隔离属性,可以在应用程序之间共享操作系统(OS)。 因此,容器被认为是轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。可以把容器看做是不用安装操作系统的虚拟机,容器化技术比虚拟机更加灵活,更加小巧,更加极致的利用物理机资源。
3、Docker 的优点
①、部署快,开发测试更加敏捷
通过Docker 打包镜像发布测试,一键运行。
②、快速扩缩机器
由于Docker容器快速启动特性,可以很快速的启动几十个、上百个容器来提供更多并发和资源利用率,并且这么多容器也有比较成熟的解决方案来统一管理,比如K8S。
③、提高系统利用率,降低硬件成本
轻量级的虚拟机,更省资源。
④、跨环境可移植
⑤、更好的支持微服务
微服务是近几年来IT圈内谈论比较多的一个名词,意义也很简单:尽可能细粒度拆分业务程序架构,由多个独立服务组成业务系统。
而Docker的容器设计原则:一个容器一个服务,容器之间相互隔离,和微服务正好遥相呼应。
⑥、应用运维标准化,支持不同语言应用
⑦、避免云厂商锁定
4、Docker 学习网站
①、官网(永远的神)
②、官方文档
③、仓库地址
Docker从入门到精通(一)——初识的更多相关文章
- docker从入门到精通再到放弃
		docker说明 docker三大功能:构建(build).运输(ship).运行(run),只需要记下这三大功能就可以了 1.docker入门 docker安装及配置 a.docker源配置 cur ... 
- docker 从入门到精通
		转载请注明出处!!!! 1.Docker 基本指令 下载镜像 docker pull 镜像名称:版本 查看已有镜像 docker images 查看已有容器 docker ps 启动docker do ... 
- 《OD Docker实战》Docker从入门到精通
		一. 安装Docker http://wiki.jikexueyuan.com/project/docker-technology-and-combat/ https://mos.meituan.co ... 
- Docker从入门到精通(二)——安装Docker
		通过上面文章,我们大概知道了什么是Docker,但那都是文字功夫,具体想要理解,还得实操,于是这篇文章带着大家来手动安装Docker. 1.官方教程 https://docs.docker.com/e ... 
- Docker从入门到精通(三)——概念与执行流程
		前面我们大概介绍了docker是什么以及如何安装docker,但是对里面出现的一些名词,可能大家还不熟悉,这篇文章就来为大家解惑. 1.容器化平台 Docker 是提供应用打包,部署与运行应用的容器化 ... 
- Docker从入门到精通(四)——常用命令
		话不多说,本篇文章给大家介绍 docker 的常用命令,基本上会覆盖我们日常使用的命令. 1.万能帮助命令 docker 命令 --help 假设你想用某个命令,但是又不知道该命令的一些参数怎么用,这 ... 
- Docker从入门到精通(五)——Dockerfile
		Dockerfile 简单来说就是一个包含用于组合镜像的命令的文本文档,Docker 通过读取 Dockerfile 中的指令就可以按步骤生成镜像,那么在制作镜像之前,我们先了解一下镜像的原理. 1. ... 
- Docker从入门到精通(六)——容器通信
		想要变成 Docker 的高阶玩家,搞懂 Docker 的容器通信是必不可少的. 1.需求 通常一个 Web 项目上线,我们会把开发完成的服务部署在Tomcat 服务器里面,然后需要的持久化数据会存放 ... 
- Docker从入门到精通(七)——容器数据共享
		什么是容器数据共享?简单来说就是容器与容器之间数据共享,容器与宿主机数据共享. 1.为什么需要数据共享? ①.数据持久化 比如我们有一个MySQL集群,通过容器启动,那么项目运行过程中的数据是保存在容 ... 
随机推荐
- C#中指针的使用(转)
			在C#中,有时候希望通过指针来操作内存,这样可以提高效率.我们可以用unsafe关键字修饰含有指针操作的程序段,如下所示: class Program { static int Main(stri ... 
- [atARC123F]Insert Addition
			前置知识 下面,先来介绍一下Stern-Brocot Tree的结构: 其是一棵满二叉树,每一个节点都是一个最简分数,其中根为$\frac{1}{1}$ 假设前$i$层的中序遍历分数依次为$\frac ... 
- Study Blazor .NET(三)组件
			翻译自:Study Blazor .NET,转载请注明. 关于组件 blazor中组件的基础结构可以分为以下3部分, //Counter.razor //Directives section @pag ... 
- AOP实现方式一
			1.创建相应的类 2.代码 service沿用前面的 增加两个log Log.java package com.shao.log; import org.springframework.aop.Met ... 
- springboot访问静态资源404
			<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ... 
- could not extract ResultSet
			使用jpa进行代码更新:update的时候发现代码出现了异常:could not extract ResultSet 在数据库看数据并没有更新,后发现更新操作需要加一个注解 注释:当设置nativeQ ... 
- 多线程02.继承Thread类
			package chapter2; /** * 1.使用static虽然完成了当前的功能. * 但是static的生命周期比较长,需要在所有线程执行完成后才会结束. * 还有号没有按照顺序进行打印 * ... 
- Apache Kafka分布式流处理平台及大厂面试宝典v3.0.0
			概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache Kafka官网地址 http://kafka.apache.org/ 最新版本为 3.0.0 Apach ... 
- 【POJ3349 Snowflake Snow Snowflakes】【Hash表】
			最近在对照省选知识点自己的技能树 今天是Hash 题面 大概是给定有n个6元序列 定义两个序列相等 当两个序列各自从某一个元素开始顺时针或者逆时针旋转排列能得到两个相同的序列 求这n个6元序列中是否有 ... 
- Codeforces 840C - On the Bench(dp/容斥原理)
			Codeforces 题目传送门 & 洛谷题目传送门 这是一道 *2500 的 D1C,可个人认为难度堪比某些 *2700 *2800. 不过嘛,*2500 终究还是 *2500,还是被我自己 ... 
