Docker之基本原理介绍
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之基本原理介绍的更多相关文章
- Docker Context基本原理
Docker Context基本原理 介绍 本指南介绍了上下文如何使单个Docker CLI轻松管理多个Swarm集群.多个Kubernetes集群和多个单独的Docker节点. 单个Docker C ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙
消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...
- Docker底层原理介绍
1.docker介绍 1.1什么是docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻 ...
- Docker这么火爆。章节一:带你详尽了解Docker容器的介绍及使用
前言 很多小伙伴可能在工作中都听说过Docker,但是实际工作中却没有使用过,听得多了,也对Docker内心有一种很深切的想了解,但是因为各种原因而不知道如何去了解而发愁,不要急,这篇文章带你认识Do ...
- Linux和Docker的Capabilities介绍及Setcap命令
Linux和Docker的capabilities介绍 转载:https://www.cnblogs.com/charlieroro/p/10108577.html 验证环境:centos7 x86/ ...
- Docker实用命令介绍
Docker实用命令介绍 1. docker启动.关闭.停止 ╭─wil-xz in ~ 12:15:44 ╰─٩(ŏ﹏ŏ.)۶ service docker restart Redirecting ...
- (转) Docker swarm 之介绍与使用
今天,在站内看到一篇关于Docker Swarm 的文章,非常好,在这里转过来,方便日后查阅 :) 原贴链接: http://www.cnblogs.com/rio2607/p/4445968.htm ...
- Docker image 镜像介绍
操作镜像 使用 docker 命令行操作 docker 镜像 获取镜像 使用「docker pull +镜像名称」从网络上下载image镜像 core@localhost ~ $ docker pul ...
- Docker: 基础介绍 [一]
一.Docker介绍 Docker是Docker.lnc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源 Do ...
- Docker for .Net Developers(part1:Docker基本概念介绍)
一.什么是Docker 目前,.Net 社区中很可能会用到的两个词是“微服务”和“Docker”. 这两个主题都非常引人注目,并为开发人员和架构师带来兴奋之情. 在这个新系列的博客文章中,我把自己最近 ...
随机推荐
- C语言II博客作业04
C语言II-作业04 作业头 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2/?page=2 这个作业要求在哪里 https://ed ...
- Java多线程编程技术方案原理
一 ,多线程相关的一些概念 1,线程和进程: 线程指的是进程中一个单一顺序的控制流, 进程中可以并发多个线程,每条线程并行执行不同的任务,被认为是一个计算资源的集合.进程不能被任务是一个应用,因为有些 ...
- RocketMQ 如何保证消息不丢失,重复消费
RocketMQ 如何保证消息不丢失 Producer 提供SYNC的发送消息方式,等待broker处理结果. 发送消息如果失败或者超时,则重新发送. // 同步发送消息,如果5秒内没有发送成功,则重 ...
- List集合拆分为多个List
List切分为多个List 使用SubList实现分批处理 // 创建模拟list List<Integer> dataList = new ArrayList<>(); fo ...
- linuxz中压缩解压缩文件
压缩解压缩.tar格式文件: 把文件打包为tar.gz命令: tar -zcvf 文件名.tar.gz 要压缩的文件/文件夹 ...
- 将本地文件推送到Gitee仓库
完整的步骤 1.在gitee中创建仓库 2.下载.安装git 3.推送文件到gitee 推送文件到gitee 1.在要上传的文件夹空白处,点击右键,选择 git bash here 2.输入 git ...
- python34
Python成员运算符 除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组. 运算符 描述 实例 in 如果在指定的序列中找到值返回 True ...
- 使用MVC编程模型通过flask蓝图实现前端后台新闻发布系统
相关知识点: flask:是Python开发轻量级框架,也能很好的开发动态网站. 蓝图:flask中蓝图能很好的实现代码分割管理,从而不使代码全部放在app.py杂乱无章,蓝图就像动物管理员一样,把猫 ...
- restful的10个规范、序列化和反序列化的名词解释
# 概念 REST全称是Representational State Transfer,中文意思是表述:表征性状态转移. RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应 ...
- oracle学习undo之事务槽和oracle的多种提交方式
1.事务槽数量参数 每一个oracle数据块里面在数据块头部都有事务槽,事务槽的数量可以去查一下,如果数据库中的表T2: select INI_TRANS,MAX_TRANS from dba_tab ...