Docker 环境搭建请移步:https://i.cnblogs.com/posts/edit;postId=14090026

First:docker能做什么?

  传统的环境部署:

    1、环境和项目分开搭建部署,环境离散,不方便迁移
    2、环境未隔离
    3、部署相对来说比较复杂/困难(tomcat+jdk+...),需要手动封装
    4、研发提交代码-CICD-打包war推送至目标服务器,运行sh

  ***  在 Dokcer 横空出世之前,应用打包一直是大部分研发团队的痛点。

  ***  在工作中,面对多种服务,多个服务器,以及多种环境,如果还继续用传统的方式打包部署,会浪费大量时间精力

  ***  在 Docker 出现后,它以更高效的利用系统资源、更高效的利用系统资源、一致的运行环境、持续交付和部署、更轻松的迁移、更轻松的维护和拓展,6大优点迅速火了起来

  docker能解决什么问题

    1、高效有序利用资源
    2、机器资源有限;
    3、单台机器得部署多个应用;
    4、应用之间互相隔离;
    5、应用之间不能发生资源抢占,每个应用只能使用事先注册申请的资源。

  一次编译,到处运行
    类似于java代码,应用及依赖的环境构建一次,可以到处运行。

  – 左边为虚拟机,右边为docker环境 –

    Server :物理机服务器
    Host OS :构建的操作系统
    Hypervisor :一种虚拟机软件,装了之后才能虚拟化操作系统
    Guest OS :虚拟化的操作系统
    Bins/Libs :执行命令、工具
    App A :构建的软件
    Docker Engine :跳过虚拟化内核的步骤,直接使用宿主机内核

    从图片中我们可以清楚的了解到,相比于 Docker,虚拟机更加的臃肿。

    虚拟机和容器都需要物理机以及操作系统,但是虚拟机有 Hypervisor 层以及 Guest OS 层。但是 Docker 是没有这两个部分的,只有一层 Docker Engine。

    并且每个容器都和宿主机共享计算机的硬件资源以及操作系统。那么由Hypervisor带来的资源耗损,在容器这边是不存在的。

    所以Docker与虚拟机对比,是有很强大的优势的,当然,也会有一定的缺点

  虚拟机 与 docker 优劣势对比:

    优势(省去了虚拟化内核的步骤):

      1. 节省资源(CPU、内存)

      2. 秒级启动

      3. 轻量级方案(同样一台服务器可以启动几百个docker,但是不能启动几百个虚拟机)

    劣势

      1. 隔离性、安全性相比虚拟机更弱(比如,如果其中一个容器将内核给"搞坏了",那所有的容器就都无法正常工作了)

      2. 某些情况下服务器会挑内核(eg.编译c++)

  Docker的作用(相对于测试童鞋)

    1. 搭建测试环境

    2. 搭建各类基础服务

    3. 搭建测试执行环境(自动化测试脚本执行环境)

Second:docker核心概念(镜像 / 容器 / 仓库)

  镜像

    镜像:

    只读文件和文件夹组合,是docker容器启动的先决条件--静态的
    --自己搭建(eg:基于centos,安装nginx,部署应用,自定义配置)
    --拉取别人已经做好的镜像

    镜像加载的原理:

      docker镜像是由一层一层的文件系统组成,就是联合文件系统。

      例如:tomcat镜像

  容器

    1、容器是镜像的运行实体
    2、容器运行的是真正的应用程序
    3、容器有5种状态:初建、查看、运行、停止、暂停、删除
    4、虽然容器是宿主机运行的进程,但容器有自己的运行控件和资源限制,所以,在容器内部是看不到宿主机的进程、环境变量、网络等信息
    5、容器是基于镜像创建的实例,可单独存在。一个镜像可以创建多个容器。

  仓库
    1、仓库是用于存储和分发docker镜像
    2、--公共镜像仓库-docker hub(官方、个人)
    3、--私有镜像仓库

  镜像、容器和仓库之间的关系

  

  整体质量流程

# 后续将持续更新docker在实际工作中的使用,感兴趣的童鞋,欢迎关注留言讨论哦

Docker之基本原理介绍的更多相关文章

  1. Docker Context基本原理

    Docker Context基本原理 介绍 本指南介绍了上下文如何使单个Docker CLI轻松管理多个Swarm集群.多个Kubernetes集群和多个单独的Docker节点. 单个Docker C ...

  2. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  3. Docker底层原理介绍

    1.docker介绍 1.1什么是docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻 ...

  4. Docker这么火爆。章节一:带你详尽了解Docker容器的介绍及使用

    前言 很多小伙伴可能在工作中都听说过Docker,但是实际工作中却没有使用过,听得多了,也对Docker内心有一种很深切的想了解,但是因为各种原因而不知道如何去了解而发愁,不要急,这篇文章带你认识Do ...

  5. Linux和Docker的Capabilities介绍及Setcap命令

    Linux和Docker的capabilities介绍 转载:https://www.cnblogs.com/charlieroro/p/10108577.html 验证环境:centos7 x86/ ...

  6. Docker实用命令介绍

    Docker实用命令介绍 1. docker启动.关闭.停止 ╭─wil-xz in ~ 12:15:44 ╰─٩(ŏ﹏ŏ.)۶ service docker restart Redirecting ...

  7. (转) Docker swarm 之介绍与使用

    今天,在站内看到一篇关于Docker Swarm 的文章,非常好,在这里转过来,方便日后查阅 :) 原贴链接: http://www.cnblogs.com/rio2607/p/4445968.htm ...

  8. Docker image 镜像介绍

    操作镜像 使用 docker 命令行操作 docker 镜像 获取镜像 使用「docker pull +镜像名称」从网络上下载image镜像 core@localhost ~ $ docker pul ...

  9. Docker: 基础介绍 [一]

    一.Docker介绍 Docker是Docker.lnc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源 Do ...

  10. Docker for .Net Developers(part1:Docker基本概念介绍)

    一.什么是Docker 目前,.Net 社区中很可能会用到的两个词是“微服务”和“Docker”. 这两个主题都非常引人注目,并为开发人员和架构师带来兴奋之情. 在这个新系列的博客文章中,我把自己最近 ...

随机推荐

  1. 实验一 Python程序设计入门 20203412马畅若

    课程:<Python程序设计>班级: 2034姓名: 马畅若学号:20203412实验教师:王志强实验日期:2021年4月13日必修/选修: 公选课 实验一 (一)实验内容 1.熟悉Pyt ...

  2. Python学习笔记(二)变量的使用

    一.变量的定义 把程序运算的中间结果临时存到内存里,以备后面的代码继续调用,这几个名字的学名就叫做"变量" 可以把变量看做保存信息的容器,它们的目的是在内存中标注和存储数据,然后可 ...

  3. k8s中pv和pvc

    转载: https://blog.csdn.net/echizao1839/article/details/125766826

  4. NLP学习日记

    数据读取 下载csv文件后使用excel进行转存,然后用pandas读取,再把读取后转为numpy,numpy的tensor里.-1代表数组的最大维度,将原始数据集的标签和特征集分开,便于下一步的处理 ...

  5. 工作频率运行在3.0 ~ 4.5 GHz的高效率GaAs HBT MMIC驱动放大器-CBG9326

    国内使用UWB高精度室内定位的行业应用产品,工作频段大部分都在3.5Ghz-6GHz低频段(Channel 2(特定场景如管隧矿)和Channel 5)范围,因此只能应用于煤矿.监狱等封闭的小众市场. ...

  6. Postman中添加多个Cookie

    在接口测试中,很多接口都是需要登录后才能获取到数据的.如何标识登录状态呢?有些app用token,有些app用Cookie.通过Fiddler抓包看到,我涯使用的是Cookie的方式,而且是有多个Co ...

  7. 解决不了ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing啊

    我今天真的好难受,在我结束hbase的配置的后,又是成功运行了shell命令,我以为万事大吉,结果下午再用shell命令时,给我报了这个错,我按着网上说的删了点东西,还是解决不了,难受啊. 我现在时决 ...

  8. MyBatis_04(MyBatis获取“参数值”的两种方式)

    MyBatis获取"参数值"的两种方式 (重点!!!) MyBatis获取参数值的两种方式:${}和#{} ${}的本质就是字符串拼接 , #{}的本质就是占位符赋值 ${}使用字 ...

  9. springcloud(七) - Sleuth链路追踪

    服务跟踪的具体步骤 sleuth系统自动埋点并把数据发给zipkin,ziplin负责存储和展示数据. 具体实现 cmd执行jar 代码执行(server.licent都需要配) <!-- 添加 ...

  10. linux交叉编译libiconv

    1.解压libiconv-1.14.tar 2.进入解压后目录libiconv-1.14 3.执行交叉编译环境命令,例如: source /home/huhe/environment-setup-aa ...