回顾之前遇到的问题:

1、安装一堆不同版本的python在本机,明明用pip安装套件却无法import

2、本地开发用的套件版本和生产环境不合,代码一到生产环境就不能用

3、申请一个测试用的开发环境需要等一段时间

4、重新建立环境很麻烦,搞不清楚先前的环境到底装了什么东西

用docker好处:

每次不用deploy算法跟ops从头解释一遍,专心开发,不用花太多时间管环境的事情

更新python版本,python2.7--python3.6

对应系统不同命令安装python包,系统升级之后,很多东西需要重新pip,需要检查代码

如果有其它语言还需要配置相应环境

虚拟环境:

1、Isolation :python版本和包在它们自己的虚拟环境下

2、Organization:对于python包,每个项目可以维持他自己的需求虚拟环境

3、No-Globalization:don't require installing stuff globally on the system

隔离不同专案的环境:

virtualenv 1                 virtualenv2

project1                        project2

python2.7                       python3.6

上面针对python解法

如果环境更复杂,还有其它项目及其它语言对版本依赖等等

使用Container隔离环境

虚拟机和容器

隔离环境

隔离环境主要分为三个等级 :应用层级、执行指令层级、硬体层级

最右边:

硬体隔离 :(会想到双系统) 优点:从底层相互隔离互不影响 缺点:浪费资源

一个不够用从另一个挖过来,影响其它系统

最左边:

硬体环境:hypervisor:host os 之后上面安装虚拟机os1.2.3,每个虚拟机安装自己的软体,不同虚拟机无法沟通

缺点:运行太慢,每个硬体都需要虚拟层去模拟虚拟环境,每个vn故自己硬体

中间:

硬体层,共同使用linux资源,应用层互不干扰,执行层共享资源

虚拟机和容器差异:

左边虚拟机:

server:硬体环境

Host OS:windows 7 、windows 10

Hypervisor:Vmware、virtualbox

之后彼此独立,在centos安装自己东西,互不独立,资源不共享,事先设置好每个虚拟机资源

Container:应用层面虚拟化,通过Docker与host OS进行交流,从应用层面开始的分离的而不是从host os开始隔离的

使用资源效率更好,因为可以利用底层资源

容器可以直接使用kernal资源

Containers彼此之间互相独立,通过Interface,每个Containers都可以直接和linux上的Drivers沟通,来调度硬体资源,

可以直接使用资源,之间隔离是通过linux Kernel既有的功能(Namespaces、cgroups、SELinux)做隔离的,所以说它是应用端的隔离不需要重新模拟出一个os来操作

二者比较:

VMs                                                Containers

硬体层:从新模拟出一台系统        从os层面模拟必须是linux os因为需要用到linux kernel

重:启动速度慢                              轻:启动速度快

性能比较差                                      性能逼近原生

完全隔离更加安全                            进程之间隔离却少一定安全性

Docker logo:

Container:大鱼上的货柜

Docker:像大鱼一样,载着各种容器运行

Docker是Contain一种,也是目前普遍的技术,

Docker主要三个用途:Build Ship and Run

Build:可以使用任何语言在docker containers 开发一个app,可以把你做的东西打包成一个镜像文件,

ship:这个镜像文件可以放到任何一台安装docker里面来使用

run:一般标准配置会运行1000个以上containers

Docker is a kind of container

Container可以想象一个货柜可以在里面安装东西

Docker把 自己Container打包成image,image可以叠起来,用哪个image直接调用就好

Docker的生命周期:

把需要的配置写入到Dockerfile,通过build指令压缩一个image,到本地通过docker的run指令,本机就可以用

Containers可以理解为让你进,让你操作的一个环境,Containers有自己的生命周期有stop、start、restart完全可以当成一个机器用

Containers有很多操作还可以用commit重新给它打包成image

大家之间互相共享可以把images push到Docker registry里面,也可以pull下来

也可以存起来backup.tar

和Docker一起工作:

Client和Docker_Host一般是指本机(本机装个Docker_Host),Registry一般指远端的机器,在本机可以通过docker build法会把指令传送到Docker Daemon,Docker_Host一直有运行指令会把docker build指令的内容建立成image。 运行docker run 也会传送到Docker Daemon 会搜索一下是否有image,如果有想要的image,就会run一下,变成containers,之后进行操作;如果本机没有image,它回去远端pull到image然后启动它。

Docker(基础理解)相关推荐

  1. Docker学习(2)——图文并茂讲解Docker基础命令

    一.Docker基础命令总结 命令 功能 docker load -i ubuntu.tar 导入镜像 docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为 ...

  2. docker基础 (狂神说)

    Docker 学习笔记 Docker 概述 1.docker为什么会出现 一款产品:开发-上线 两套开发环境! 应用环境,应用配置! 开发-运维.问题:我在我的电脑上可以允许!版本更新,导致服务不可用 ...

  3. Docker基础入门及示例

    Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...

  4. 【Linux】Docker 基础与实战,看这一篇就够了

    Docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Uni ...

  5. Docker 基础介绍及配置安装 [一]

    Docker 基础介绍及配置安装 [一] Docker 基础介绍及配置安装 [一] Docker 时间:2016年11月2日 Docker介绍 Docker是Docker.lnc公司开源的一个基于LX ...

  6. Docker 基础与实战,看这一篇就够了

    作者 |  单一色调 责编 | Elle Docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...

  7. 尚硅谷docker基础篇 2018版

    typora-root-url: ./image Docker基础篇之快速上手 第一章 Docker简介 是什么? 问题:为什么会有 docker 的出现 一款产品从开发到上线,从操作系统,到运行环境 ...

  8. Docker基础、进阶笔记,为k8s的学习预预热

    标题 Docker基础.进阶笔记,为k8s的学习预预热 笔记来源于视频: 狂神docker基础篇 狂神docker进阶篇 笔记中图片有些取自于:这位博主的两篇docker笔记中的一些图片 百度云笔记工 ...

  9. Docker基础命令学习

    Docker基础命令学习 二.Docker 入门 Docker是什么? Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...

最新文章

  1. Mybatis指定日志输出实现
  2. python入门教程完整版(懂中文就能学会)-Python入门教程完整版(懂中文就能学会)...
  3. C语言常见的错误类型
  4. Hi3516A开发--i2c tools安装和使用
  5. asp.net core封装layui组件示例分享
  6. Java EE 6 Web配置文件。 在云上。 简单。
  7. C++学习之路 | PTA乙级—— 1043 输出PATest (20 分)(精简)
  8. arm-hisiv100nptl-linux-gcc编译boa和移植
  9. linux redhat 下让redis以服务方式运行
  10. 自定义获取焦点的TextView
  11. js基础知识汇总05
  12. matlab fseek ftell,fseek函数、ftell函数和fflush函数
  13. PHP从入门到精通学习路线图
  14. 51单片机学习:蜂鸣器实验
  15. TELEPORTSTONE.LUA --传送宝石
  16. 计算机网络辅助英语写作,基于计算机网络的英语写作教学
  17. 向前的快捷键_快速提高逼格的电脑快捷键你懂多少?
  18. 计算机英语的词汇量,英语词汇量多少才够用
  19. 【深度学习入门系列】径向基函数(RBF)神经网络原理介绍及pytorch实现(内含分类、回归任务实例)
  20. java实现第六届蓝桥杯生命之树

热门文章

  1. fastcgi协议分析与实例
  2. volatile变量与普通变量的区别
  3. [Snipaste]系统截图工具
  4. 一些软件软件开发原则
  5. Android自动化测试工具Appium环境搭建
  6. 调整weblogic内存的分配和使用
  7. 802.11N blockACK
  8. Leetcode232使用栈实现队列
  9. openwrt satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod: * 问题解决
  10. 安卓中的单例模式和工厂模式