标签 : docker
[TOC]
本文对docker进行大致介绍,包括概述,安装,简单使用,架构,基本原理等方面
可以参考下面三篇文章。从我使用的感受来看,我觉得Docker就是一个应用打包工具,把写好的应用用docker打包发布,然后别人就可以直接部署使用了,特别方便。
Docker Engine is a client-server application with these major components:
我觉得官网的解释很言简意赅,附上图(摘自官网)
安装参考Install Docker Engine
以ubuntu 14.04 为例,参考Installation on Ubuntu安装Docker engine
这里列出重要的步骤:
注 :如果输入docker info
出问题,多半是权限问题,以sudo运行试试
Mac下安装参考Installation on Mac OS X
Mac下有两种安装方式供选
两者的区别请参考 Docker for Mac vs. Docker Toolbox
先不多说,跑起来体验下。具体的步骤和指令在Docker简明教程这篇文章已经写得很清楚了,在此不再赘述
由上图可知,docker是一个client-server架构
docker的内部主要有三种资源/组件
这里重点说说images and containers
Docker使用union file systems 把不同的层(layer)做整合成单一的image. Union File System的中一种是AUFS,可以参考这篇博文
官网文档对image的layers是这么描述的
Each Docker image references a list of read-only layers that represent filesystem differences. Layers are stacked on top of each other to form a base for a container’s root filesystem
新版docker(version>=1.10)的存储模型有变化
Previously, image and layer data was referenced and stored using a randomly generated UUID. In the new model this is replaced by a secure content hash.
而container和image的主要区别就在于top writable layer,所有对image的更改都保存在这一层。换句话说,多个container可以共享同一个image,这就大大节省了空间。实现image和container的管理有两个关键的技术:stackable image layers 和 copy-on-write (CoW).
从图中可以看出,copy-on-write (CoW)是一个很好的策略,既节省了空间,又避免了因数据共享带来的写冲突问题,从而提高效率。
本文主要对docker做简单介绍,对于一些更详细的知识,如docker file,volume,network,docker compose等等,会另写文章进行介绍。至于很具体的操作指令,比如怎么安装,怎么build image和run container来跑一个简单的docker hello world,请参考官方文档Docker Engine部分的“get started with docker”或者"learn by example",也可参考文末的一些参考资料
- Docker Documentation(官方文档)
- Docker入门教程(系列)
- Docker简明教程(使用演示)
- docker中文(系列)
- docker资源
- docker-从入门到实践(gitbook)
附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全:
--------------------------------------------------------------------------------------------------------------------