原文地址:http://blog.jboost.cn/docker-2.htmlhtml
在Docker笔记(一):什么是Docker中,咱们提到了Docker管理的对象包含镜像、容器、网络、数据卷等,本文就来介绍下这些对象及用途。
docker
所谓镜像,是一个静态的概念。它对咱们指望干的事情作了一些定义,好比要运行什么程序,须要哪些依赖,须要什么样的配置,须要开放哪一个网络端口等等。
Docker的镜像是一个特殊的文件系统,提供了运行时须要的程序、库、资源、配置等文件,还包含一些为运行时准备的配置参数(如环境变量、匿名数据卷、用户等),镜像不包含任何动态数据,其内容在构建以后也不会被改变。
镜像的文件系统有一个分层存储的概念,采用的是Union FS技术,所以,镜像并非简单地由一组文件组成,而是由多层文件系统叠加联合组成。以下图所示ubuntu
镜像构建时,会一层一层地构建,前一层是后一层的基础,每层构建完后就变成只读的,不会再发生改变。镜像分层存储的一大好处是复用,镜像的每一层能够在不一样镜像间复用,这就比如咱们开发项目时将一些公共功能封装成jar包,在各个项目能够直接依赖使用同样。关于镜像的更多内容,在后续使用时再详述。安全
相对镜像,容器是一个动态的运行时的概念,它与镜像的关系相似于面向对象中类与实例的关系。容器能够被建立、启动、中止、删除等。容器运行实质上就是运行一个进程,但与那些直接在宿主机上运行的进程不一样,容器运行在本身的独立的隔离的命名空间中——拥有本身的root文件系统、网络配置、进程空间,甚至本身的用户ID空间,所以虽然是以进程的形式运行,但好像是运行在一个独立的系统中同样,这样相比直接运行于宿主机的进程,容器的运行显得更为安全。
前面说到镜像的分层存储概念,对于容器来讲,实际上也是以镜像做为基础层,在其上建立了一个当前容器的存储层,以下图微信
以镜像ubuntu:15.04为基础层所建立的容器,都有一个本身的可读写的存储层(镜像的存储层是只读的)。容器存储层的生命周期与容器同样,容器销毁时,容器的存储层也会随之消亡,任何保存在容器存储层的数据也都会随容器的删除而丢失,所以通常咱们要保持容器存储层的无状态化,全部文件的写操做,都应该使用数据卷或绑定宿主机目录。网络
数据卷是一个独立于容器,可供一个或多个容器使用的特殊目录,它绕过了Union FS,不会随容器的销毁而消亡。这比如咱们在阿里云上建虚机,再加载一个数据盘同样,通常产生的数据都要保存在数据盘,而不是虚机的系统盘。
数据卷具有以下特性:学习
Docker容器是如何与外部进行网络通讯的?通常来讲,咱们在运行容器时,只须要指定容器服务端口与宿主机端口的映射,就能够经过宿主机IP与映射的端口访问容器服务了,由于Docker默认使用了Bridge的模式来实现容器与外部的通讯。
Docker的网络子系统经过使用一些驱动程序,是可插拔式的,默认提供了以下几种驱动:阿里云
总之,bridge适用于在同一台宿主机运行多个容器的场景;host适用于不该与宿主机进行网络隔离的场景;overlay适用于运行在不一样宿主机上的容器间通讯,或多个应用经过Swarm服务来共同协做的场景;macvlan适用于从虚拟机迁移配置或但愿容器做为物理机同样使用网络的场景。spa
本文对Docker所管理的几个基本对象——镜像、容器、数据卷、网络作了简单介绍,这是认识或学习Docker的基础,在后续实践操做过程当中,将会对各部分进行更详细的使用说明,欢迎持续关注。
个人我的博客地址:http://blog.jboost.cn
个人微信公众号:jboost-ksxy (一个不仅有技术干货的公众号,欢迎关注,及时获取更新内容)
———————————————————————————————————————————————————————————————操作系统
原文出处:https://www.cnblogs.com/spec-dog/p/11188629.html