Docker入门理解

Docker入门理解

  • 初步了解Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

 

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

 

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

 

  • 学习的过程

 

废话不多说,直接进入学习。

  1. 理解Docker

Java号称“一次编译,到处运行”,因为java虚拟机解决平台的兼容性问题,所以有java虚拟机的地方就能跑java代码;

 

Docker是:“一次封装,到处运行”,因为Docker解决了应用环境的问题,安装了Docker的平台就能跑“Docker包”,这样就决绝了“开发环境能跑,一上线就崩”的尴尬。

1.1 Docker思想

Docker本身的logo就很好的诠释了Docker的核心思想。

Docker入门理解_第1张图片
那个大鲸鱼(或者是货轮)就是操作系统把要交付的应用程序看成是各种货物,原本要将各种各样形状、尺寸不同的货物放到大鲸鱼上,你得为每件货物考虑怎么安放(就是应用程序配套的环境),还得考虑货物和货物是否能叠起来(应用程序依赖的环境是否会冲突)。
现在使用了集装箱(容器)把每件货物都放到集装箱里,这样大鲸鱼可以用同样地方式安放、堆叠集装了,省事省力。

 

 

1.2 Docker的架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

简单来说可以把容器和镜像相当于面向对象编程理得类和对象的关系来理解。镜像是类,容器是对象。镜像是固定不变的,而容器通过镜像来创建。而仓库则相当于是版本控制器。

Docker入门理解_第2张图片

 

Docker build ...:当运行这个命令时,Docker会通过守护线程daemon进行打包,daemon会通过你自己编写的Dockerfile文件里的配置,按照规矩把里面的应用打包,从而形成一个Docker能够识别的镜像。

Docker pull ...:当运行这个命令时,Docker会通过守护线程先从你的本地中查找你是否有这样一个相同的镜像,如果有不做任何操作,如果没有则到你指定的仓库地址中(如果没有指定则默认到Docker官方仓库)把你需要的这个镜像下载到本地。

Docker run ...:当运行这个命令时,Docker会通过守护线程从你的本地里查找对应名字的镜像,如果查到则根据此镜像创建容器,如果没有他会从官方仓库里查找下载,然后自动给你创建相应的容器。

 

 

 

你可能感兴趣的:(Docker,docker)