Docker02-重要概念
Docker简介
思考
思考一:
我们之前是如何将项目发布到Linux服务器的?
大致步骤如下
- 安装jdk
- 安装tomcat
- 将项目war包上传到tomcat的webapps下
- 修改配置文件
- 启动tomcat
这样看似没问题,其实我们想想,发一台机器还好,这几步就完成了。如果我们要将这个项目发布到N多台机器,那么我们是否需要再每个机器上都进行相同的步骤?并且要进行环境兼容性的测试。
思考二:
再来看一个例子,我们现在是想部署一个成熟的产品,这个产品是go语言开发的,我们该如何部署?go语言运行的环境怎么装,这个项目又该如何部署?
思考三:
一台linux机器上装了很多软件,部署了很多项目,相互之间有干扰怎么办?
Docker是什么
Docker是以容器技术为核心的一套应用的构建,分发,执行的体系和生态。

Docker 解决了什么问题
- 程序在我这里跑的好好的,在你那怎么不行了?(环境与程序打包交付)
- 系统好卡,是哪个进程把CPU吃光了?(容器之间沙箱隔离)
- 这套系统我已经搭建好了,要不你再重新搭一遍?(一次构建,到处运行)
Docker 的优点
- 更快速的交付和部署
对开发和运维来说,最希望的是一次构建或配置,可以在任意地方正常运行。
例如:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker容器很轻很快,容器的启动时间是秒级的,大量地节约开发,测试,部署的时间,并且解决开发环境和生产环境不一致的问题。 - 更轻松的迁移和扩展
Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。 - 更高的资源利用率
Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器,容器除了运行其中的应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。
Docker的目的
- 集装箱:变革了人类整个的生产流程体系,让货物全世界流通
- Docker:变革了IT领域的软件交付方式,让IT之间的鸿沟消失
:-: 目标:简化部署流程,提高生产力
Docker常用场景
- 构建DevOps流程,实现运维的自动化
- 企业私有的PAAS平台,降低开发成本,提升效率
- 企业级AppStore,统一的后端系统分发平台
- 间歇式计算任务
- 构建微服务架构
虚拟化和Docker的对比

Docker的架构

Docker daemon(Docker 进程)
Docker进程是部署在linux操作系统上,负责支撑Docker Container(容器)的运行以及本地Image(镜像)的管理。
Docker Client
用户不直接操作Docker daemon,用户通过Docker client访问Docker,Docker client提供pull,build,run等操作命令。
Docker Images
Docker 镜像,就是一个只读的模板。
例如一个镜像可以包含一个完整的linux操作系统环境,里面安装了用户需要的应用程序。
镜像可以用来创建Docker容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以从其他人那里下载一个已经做好的镜像来直接使用。
Docker Containers
Docker 容器,是镜像的一个运行实例。
Docker 是利用容器来运行应用的,它可以被启动、开始、停止、删除。每个容器都是互相隔离的,保证安全的平台。可以把容器看做是一个简易版的linux环境和运行在其中的应用程序。
Docker Registry
仓库分为公开仓库和私有仓库两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载;用户也可以在本地网络内创建一个私有仓库。
当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或私有仓库,这样其他人只需要从仓库上pull下来就可以了。
:-: 
微信扫一扫,关注“python测试开发圈”,了解更多测试教程!
Docker02-重要概念的更多相关文章
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...
- 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS
需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 【Linux大系】Linux的概念与体系
感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...
- KOTLIN开发语言文档(官方文档) -- 2.基本概念
网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2. 基本概念 2.1. 基本类型 从可以在任何变量处理调用成员函数和属性 ...
- .NET面试题系列[5] - 垃圾回收:概念与策略
面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...
- 《徐徐道来话Java》(1):泛型的基本概念
泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的.由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS ...
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
随机推荐
- Centos7安装完成后设定基本的网络配置
Centos7设定网络 新安装的centos7,网络默认是不启动的,需要人为的手工修改配置文件,在这里把这个过程简要的记录一下. 设定ip地址与mac地址自定义 [root@web ~]# cd /e ...
- BATJ都爱问的多线程面试题
# 一 面试中关于 synchronized 关键字的 5 连击 ### 1.1 说一说自己对于 synchronized 关键字的了解 synchronized关键字解决的是多个线程之间访问资源的同 ...
- LinkedHashMap原理
作者:艺旭家 链接:https://www.jianshu.com/p/8f4f58b4b8ab 总结 LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的. Ha ...
- 阿里云 安装docker
转 https://www.jianshu.com/p/f02d63ee98e0
- [转帖]Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?
Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递? http://www.itpub.net/2019/12/03/4567/ 在逛 Stack Overfl ...
- mysql 注意小结
char 默认是1 个字符 char(12) 设置是12个字符 不管是中文还是英文或者数字只能有十二个 设置外键时,这时候外键对应的父键的字段要是主键 非空而且是唯一. create table t1 ...
- Python之路【第二十一篇】:JS基础
JavaScript的基础学习(一) 一.JavaScript概述 1.1 JavaScript的历史 ● 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在 ...
- golang使用json格式实现增删查改
需求和思路 在一般的小项目或者一个小软件,例如客户端之类的小程序中,可能会需要数据的持久化.但是使用一般的数据库(Mysql)之类的不合适.使用sqlite3这种嵌入式的是个较好的方法,但是Go语言中 ...
- GoLang 的变量
变量 1.为什么要变量 1.1.一个程序就是一个世界 1.2.变量是程序的基本组成单位 2.变量的介绍 2.1.变量的概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号, ...
- Drools入门
文章转载自:http://cwqcwq.iteye.com/blog/397869 一.背景知识: 1.什么是规则引擎 Java规则引擎起源于基于规则的专家系统,而基于规则的专家系统又是专家系统的 ...