Docker images: docker image是一个只读打模板,用来创建Docker 容器
Docker Registers 互联网上存储images的地方
Docker containers: docker 容器类似一个目录,包括需要运行application需要打一切。每个容器从docker image创建。docker容器可以run,stopped,moved和deleted
每一个image由一系列layers构成,Docker使用union file systems将这些layers组成一个单独打image。
$ sudo docker run -i -t ubuntu /bin/bash
执行上述命令会发生如下操作:
拉取ubuntu image:Docker首先检查ubuntu image是否在本地存在,如果不存在,从Docker Hub上下载.如果存在,Docker使用它作为新的容器
创建一个新的container: Docker使用image创建一个container
分配一个 filesystem和挂载一个read-write layer:在文件系统中创建container,在image上添加一个read-write层
分配一个network/bridge接口:创建一个网络接口,允许Docker容器与本地host通信
设置IP
运行我们指定打命令
捕捉用户程序打输出
底层技术
Namespaces(命名空间)
Docker利用namespace
技术的优势,提供隔离打workspace,我们称之为container。container运行在自己的命名空间中,不能访问外部
Control groups
Docker使用另一个称为cgroups
或control groups的技术。让一个application隔离运行打关键是让它使用独立的资源。Control groups允许Docker在containers之间分享可用打硬件资源,如果必须,可以设置限制和约束用来限制硬件资源的使用
Union file systems
Container format
Docker将这些组件组成一个包装器,我们称之为container format。默认的container format是libcontainer
.Docker也支持传统的Linux容器(LXC)。未来Docker将支持其它container format