本文是学习Docker的过程记录, 有些内容是自己的理解, 所以可能理解的不到位甚至不正确, 随着学习的深入我会慢慢更正。
学习Docker
最好的方式就是看官方文档, 不过有时候官网的解释非常官方, 所以我把学习中用到的资料全都列在下面
Docker
是什么其实不太好定义, 它是个新的东西, 原来没有. 官方是这么说的, Docker
是一个开发、装载、运行程序的开源的平台, 致力于快速发布你的程序, 缩短了从写代码到发布上线之间的这个周期.
Docker
容器可以把程序运行所需要的一切软件, 包括代码、运行时环境、系统工具、系统库等直接打包进一个完整的文件系统里. 容器运行时可保证程序运行的环境都是一致的.
Docker
是一个开源项目, Go语言实现, 遵从Apache 2.0
协议. Docker
在Linux容器技术(LXC)
上进一步封装, 使用户操作更简单, 像是操作一个轻量级的虚拟机.
一般都会拿Docker
跟传统的虚拟机技术做比较, 下图是官网上的对比图:
在infrastructure(硬件)
之上是我们的宿主机的操作系统, 传统虚拟机需要通过一层HyperVisor
进行模拟硬件, 然后再安装虚拟机操你工作系统, 在虚拟机中跑各种程序; Docker
是在宿主机的操作系统上直接装了Docker
引擎(硬件模拟Docker帮我们屏蔽了,虚拟机也不需要了), 直接在Docker引擎上可以跑各种程序.
Docker Engine
是Docker platform
中最核心的部分. Docker Engine
是一个client-server
形式的程序, 它包括三部分:
daemon
进行交互的APIcommand line interface(CLI)
命令行脚本或命令通过REST API
跟demon
进行交互, 许多其他的docker组件, 也使用REST API
或者CLI
.
Docker是client-server
架构, Docker client
与Docker daemon
交互来控制编译、运行、发布容器. client
和daemon
运行在同一个系统里, 也可以把client
连接到远程的daemon
上, 它们可以通过socket
使用RESTful API
交互
上图中有三个新内容: image registry container
Docker image
: 一个只读模板, 比如, Ubuntu的操作系统上装了apache, 上面放了你自己的web应用, 这整个被创建成了一个镜像文件. 你可以自己制作镜像, 也可以下载别人的镜像.Docker registry
: registry用于保存image
. 存储镜像的形式可以是public
的也可以是private
的. 官方提供了一个public
的Docker registry
, 叫做Docker Hub
. Docker Hub
是官方提供的, 最大的一个镜像仓库.Docker container
: container
是通过image
来创建的. 容器里面包含了程序运行的所有东西. 容器可以被run
, started
, stopped
, moved
, 和 deleted
, 每个容器都是相互独立的.这些基本上就是Docker
经常用到的东西了. 上面的大部分内容都来自官网,更多内容可以去官网看看.