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然后启动它。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值