Docker(1)

作者: losspm | 来源:发表于2017-12-22 14:50 被阅读8次

    Docker基本


    所谓Docker,是目前流行的一款工具,可以理解为便携版的虚拟机,但是又不同于虚拟机。docker英文意思是码头工人,在这里可以理解为集装箱。每一个集装箱都是一个模拟的沙盒环境。
    仅仅谈论这个不足以体现出为什么要用这个工具,一般而言,每台机器的环境都不一致,在整个开发过程中,为了保证开发环境的一致性,每天机器需要花大量的时间去安装相关依赖程序来保证环境的一致性,十分浪费时间,但是对于docker,能够在每一个系统上迅速搭建好虚拟环境,最大程度上节约时间。
    并且,docker的基本思想就是集装箱思想,如果一个集装箱出问题了,并不是要去解决里面的问题,而是直接把集装箱kill掉,再重新建立新的集装箱。


    镜像(Image)

    对于docker中镜像的使用有两种方法
    1.从docker hub中pull相关镜像,比如

    $ docker pull ubuntu:16.04
    

    就会从docker hub上将镜像文件下载下来,但是由于被墙的原因,下载速度很慢,可以在Docker中的daemon下的registry mirror中配置相关国内镜像,提升下载速度。

    2.有时从docker hub下载的镜像不能满足要求,就需要我们自己来定制镜像,可以通过Dockerfile来定制镜像。具体Dockerfile内容参照官方文档。
    镜像不包括任何动态数据,其结构在构建之后也不会发生任何改变


    容器(Container)

    Container和Image之间的关系,就等同于实例与类的关系,镜像是静态的定义,容器是运行的实体。容器的实质是进程,容器进程有着属于自己的命名空间,因此容器可以拥有自己的独立命名空间。因此容器可以拥有自己的文件系统,网络配置等。
    每一个容器运行的时候,是以镜像为基础层,在其上创建一个当前容器的存储层,容器存储层的生命周期和容器一样,容器消亡时,容器存储层也随之消亡,因此,任何保存与容器存储层的信息都会随着容器的删除而丢失。
    因此,容器不应该向存储层写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主机目录,在这些位置的读写,会跳过容器存储层,直接对宿主机进行读写,稳定性和性能更高。


    Registry

    当我们构建完镜像之后,并且需要在其他的服务器运行的时候,这时候就需要Registry了,Registry就是一个集中,分发镜像的服务。
    在这里需要添加两个名字,一个是tag,另一个是repository,一个docker registry可以包含多个repository,每个repository可以包含多个tag,每一个tag对应着一个Image

    相关文章

      网友评论

          本文标题:Docker(1)

          本文链接:https://www.haomeiwen.com/subject/ikgtgxtx.html