docker常用命令

来源:互联网 发布:网络舆情情况汇报 编辑:程序博客网 时间:2024/04/28 19:03
  • 容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
  • 容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
  • 容器rootfs命令 — docker [commit|cp|diff]
  • 镜像仓库 — docker [login|pull|push|search]
  • 本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
  • 其他命令 — docker [info|version]
各种状态转换:


结合图和命令分类,基本可以把docker的主要功能过一遍了

理解docker的特点首先明确技术要点,Docker技术就是基于容器的虚拟化技术,
相对于其它虚拟化技术,它的特点是:
* 轻量级:单机可以轻松支持上百container,让各种个位数虚拟化的方案相形见绌
* 快速就绪:一秒以内启动,即使是以资源快速就绪著称的青云IAAS也无法相比
* 弱安全:docker能够对多种OS资源进行隔离,但是它本质上依托于内核,因此所有的内核漏洞都是docker的致命伤

上述三个特点都不是实现上的差异,而是设计方案的先天结果,因此上述结论会在很长一段时间内有效。
理解上述这些特点非常重要。
很多刚接触docker的人会把它和虚拟机做类比,然而这种类比和docker的最佳实践场景有所不同,一个docker容器不像是一台虚拟机,而更像是一个服务单元,如果要类比,反倒更像进程。


当然,docker容器从技术层面上看确实也就是一个进程,然而这不是关键,“轻量级”这个特点带来的其实是服务器软件工作方式的回归。
不妨来看看服务器软件的工作单元的抽象工作方式。
服务器软件的抽象模型是有限状态机,不难想到,在这类场景下,服务单元最终要做的,无非就是下面这些事情:
1. 从网络得到请求
2. 结合内部状态进行计算
    2.1 访问独有或共享的内存
    2.2 访问独有或共享的文件系统
    2.3 访问其它服务单元
3. 通过同步或者异步的方式将计算结果由网络反馈出去

最为复杂的部分当属第2步,不过如果考虑到服务器软件需要进行水平扩展,业务也会逐渐分布化,我们会想到一句话,“不要通过共享内存进行通信,而是要通过通信共享内存”,所以,2.1. 可以改为访问独有的内存
实际上,由于有2.3的存在,2.2 也可以简化为访问独有的文件系统,不过文件系统本身的IO性能很差,一旦到了这个层面,往往是分布式和水平扩展的压力不大的场景,所以可以保留。

0 0
原创粉丝点击