Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器,容器是一个运行时环境。
可以把容器看做一个简易版本的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
版本区分
分为社区版CE和企业版EE
社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
Docker仓库从Docker1.13版本之后采用时间线的方式作为版本号。
社区版按照stable和edge两种方式发布,每个季度更新stable版本,如18.06,18.09;每个月份更新edge版本,如18.09,18.10
核心技术
- cgroups => 限制容器的资源使用
- namespace => 实现容器间的隔离
- chroot => 文件系统的隔离
速度理解
-
docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源的虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,引擎在CPU和内存利用率上docker将会在效率上有明显优势
-
docker利用的是宿主机的内核,不需要Guest OS。因此当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,
后台模式
Docker容器后台运行必须要有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如运行top、tail)就会自动退出,这个是docker的机制,例如针对nginx应用,默认其是后台启动的,就导致docker前台没有运行的应用,运行命令完毕后docker容器就会退出,最佳的解决方案是将要运行的程序以前台的形成运行。
数据问题
容器运行结束后,如果不通过commit指令生成新的镜像,使得数据作为镜像的一部分保存下来,当容器删除后,容器内产生的数据会丢失,可以通过数据卷解决。
命令执行
Docker不建议启动SSH,可以使用exec和attach指令进入
镜像字段
ljhan2/nginx:1.1.9
ljhan2-命令空间[包名]
nginx-镜像名称[类名]
1.1.0 -镜像版本[版本]
数据卷
- 容器数据的持久化
- 容器和主机之间共享数据
Dockerfile
可以采用如下说法:
- 构建文件
- 描述文件
- 构建描述
阶段分析
从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段。
- Dockerfile是软件的原材料 ==> 面向开发
- Docker镜像是软件的交付品 ==>交付标准
- Docker容器是软件的运行态 ==>部署运维
编排工具
-
Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景。
Compose是Fig的升级版,Fig已经不再维护。Compose向下兼容Fig,所有
fig.yml只需要更名为docker-compose.yml即可被Compose使用。 -
Mesos
Apache[2013]
-
Docker Swarm
Docker自己[2016]
-
Kubernetes
谷歌[2014]








网友评论