Docker(基础理解)
回顾之前遇到的问题:
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(基础理解)相关推荐
- Docker学习(2)——图文并茂讲解Docker基础命令
一.Docker基础命令总结 命令 功能 docker load -i ubuntu.tar 导入镜像 docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为 ...
- docker基础 (狂神说)
Docker 学习笔记 Docker 概述 1.docker为什么会出现 一款产品:开发-上线 两套开发环境! 应用环境,应用配置! 开发-运维.问题:我在我的电脑上可以允许!版本更新,导致服务不可用 ...
- Docker基础入门及示例
Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...
- 【Linux】Docker 基础与实战,看这一篇就够了
Docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Uni ...
- Docker 基础介绍及配置安装 [一]
Docker 基础介绍及配置安装 [一] Docker 基础介绍及配置安装 [一] Docker 时间:2016年11月2日 Docker介绍 Docker是Docker.lnc公司开源的一个基于LX ...
- Docker 基础与实战,看这一篇就够了
作者 | 单一色调 责编 | Elle Docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...
- 尚硅谷docker基础篇 2018版
typora-root-url: ./image Docker基础篇之快速上手 第一章 Docker简介 是什么? 问题:为什么会有 docker 的出现 一款产品从开发到上线,从操作系统,到运行环境 ...
- Docker基础、进阶笔记,为k8s的学习预预热
标题 Docker基础.进阶笔记,为k8s的学习预预热 笔记来源于视频: 狂神docker基础篇 狂神docker进阶篇 笔记中图片有些取自于:这位博主的两篇docker笔记中的一些图片 百度云笔记工 ...
- Docker基础命令学习
Docker基础命令学习 二.Docker 入门 Docker是什么? Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...
最新文章
- Mybatis指定日志输出实现
- python入门教程完整版(懂中文就能学会)-Python入门教程完整版(懂中文就能学会)...
- C语言常见的错误类型
- Hi3516A开发--i2c tools安装和使用
- asp.net core封装layui组件示例分享
- Java EE 6 Web配置文件。 在云上。 简单。
- C++学习之路 | PTA乙级—— 1043 输出PATest (20 分)(精简)
- arm-hisiv100nptl-linux-gcc编译boa和移植
- linux redhat 下让redis以服务方式运行
- 自定义获取焦点的TextView
- js基础知识汇总05
- matlab fseek ftell,fseek函数、ftell函数和fflush函数
- PHP从入门到精通学习路线图
- 51单片机学习:蜂鸣器实验
- TELEPORTSTONE.LUA --传送宝石
- 计算机网络辅助英语写作,基于计算机网络的英语写作教学
- 向前的快捷键_快速提高逼格的电脑快捷键你懂多少?
- 计算机英语的词汇量,英语词汇量多少才够用
- 【深度学习入门系列】径向基函数(RBF)神经网络原理介绍及pytorch实现(内含分类、回归任务实例)
- java实现第六届蓝桥杯生命之树