本帖最后由 antsunzj 于 2017-11-16 21:12 编辑
这是为了配合我昨天所发的镜像所做的一个简易经验分享。建议新手在使用我的镜像之前,先阅读本文。还没有写完,但是先发出来,让使用我的固件的新手先大致理解什么是docker。开始认识docker之前,我们先看一张官方的标志图:
这是一个知乎大神对这张图做的一个通俗的解释,在这里引用一下:
#########################################################
那个大鲸鱼(或者是货轮)就是操作系统
把要交付的应用程序看成是各种货物,原本要将各种各样形状、尺寸不同的货物放到大鲸鱼上,你得为每件货物考虑怎么安放(就是应用程序配套的环境),还得考虑货物和货物是否能叠起来(应用程序依赖的环境是否会冲突)。 ######################################################### 我们再来看一些专业的解释: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。 Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是Docker提出的"Build once,Run anywhere"。 为了更好的认识Docker,我们先来了解几个必备词汇:镜像,容器和仓库。 - 镜像(image):Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。镜像是一种文件结构。Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:https://hub.docker.com/。
- 容器( Container):容器是从镜像创建的运行实例。为了隔离应用,Docker进程隔离,为进程或进程组创建已隔离的运行空间,为进程提供不同的命名空间视图。这样,每一个隔离出来的进程组,对外就表现为一个container(容器)。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境,Docker 利用容器来运行应用。
- 仓库:仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。Docker仓库用来保存我们的images,当我们创建了自己的image之后我们就可以使用push命令将它上传到公有或者私有仓库,这样下次要在另外一台机器上使用这个image时候,只需要从仓库上pull下来就可以了。
############################################################## 作为一个小白的我,看了有点懵懵懂懂的意思了。为了更加深入的理解,我不断的百度和google。慢慢的有了自己的理解。下面就跟大家深入的分享一下: 我们还是来看一张我画的图: ################################################################# 我用小白的视角解读一下啊: - dockerhub这个网站相当一个公共的码头仓库,各种热血码农们生产打包好自己的集装箱(即镜像img),例如hass官方会在里面提供他们封装好了的集装箱(即镜像img) 。他们把集装箱(即镜像img)都放在码头上,我们可以通过网络把码头上的集装箱(即镜像img)搬回自己的船上。把东西搬回来的过程即pull。
- 你在这个已经搬回船上的集装箱模板上产生一个进程即划分出一个新的“使用的空间”,这个进程( “使用的空间” )叫即“容器”,这个“容器”是可以和我们的船或者其他的容器根据一定的规则通讯的。然后我们在“容器”进行操作,所有无论你弄这个容器,都不会把破坏船也不会弄坏集装箱。a集装箱产生的“容器”也不会弄坏b集装箱产生的“容器”。还可以在船上(系统)划个独立的地方存放供这个容器使用的文件或者依赖等。
- 甚至厉害的是,我们在容器上进行操作加工,把它整成我们想要的东西,然后又可以简单的命令封装成你自己制作的集装箱即镜像。(自己加工过有自己特色的集装箱)。新的集装箱也不会影响旧的集装箱。你可以把自己在船上新生产的集装箱(img)上传回码头给其他人搬到自己的船上。把自己集装箱传输到码头的过程即push。也可以只是把这个集装箱留在船上(img镜像留在本地仅供自己使用)。
################################################################# 所以,使用docker的整个过程是这样子的: - 造一条docker环境的船==>
- 去仓库看看有什么集装箱(img)==>
- 挑选合适的集装箱搬运(pull)回船上==>
- 以搬回的集装箱为模板按照一定的规则创建一个独立的空间即创建容器( Container) ==>
- 使用或者在容器进行各种操作以满足我们的要求==>
- 根据我们自己要求,把容器打包成新的集装箱(img) ==>
- 分享到公共码头或者私人码头或者留在船上放在。
#################################################################造船: - 我们都知道船有很多,不是什么船都可以装集装箱的。所以我们要知道什么的船可以用。即什么系统支持docker。通常是linux的各种版本都可以支持,具体的自己去百度吧。
- 在这里需要注意,能装集装箱的船承载的规格又是有不同的。即不同的核心支持使用的镜像是不一样的。比如树莓派使用arm版本的镜像,其他电脑安装的就是使用amd的镜像。所以这点要留意。
安装docker的方法论坛有详细的教程: 上面两个版本他们都是为了装hassio而产生的,我们可以根据自己的需要看看用不用安装hassio(它也是一个封装好的镜像) 我集成版本: #################################################################
|