docker
intro
- docker 是一个用于开发、交互和运行应用程序的开发平台。Docker 可以将应用程序与基础架构分开,从而能够快速交付软件。借助Docker,能够以与管理应用程序相同的方式来管理基础架构。
- docker 提供了在松散隔离的环境(称为容器)中打包和运行应用程序的功能。隔离和安全性能够在给定主机上同时运行多个容器。容器是轻量级的,由于它们不须要虚拟机管理程序的额外负载,而是直接在主机的内核中运行。这意味着与使用虚拟机相比,能够在给定的硬件组合上运行更多的容器。甚至能够在其实是虚拟机的主机中运行Docker容器!
- Docker提供了工具和平台来管理容器的生命周期:
- 使用容器开发应用程序及其支持组件。
- 容器成为分发和测试应用程序的单元。
- 准备就绪后,能够将应用程序做为容器或协调服务部署到生产环境中。不管生产环境是本地数据中心,云提供商仍是二者的混合,其工做原理都相同。
docker engine
Docker Engine 是具备如下主要组件的客户端-服务器应用程序:docker
- 服务器是一种长期运行的程序,称为守护程序进程-daemon(
dockerd
命令)。
- REST API,它指定程序能够用来与守护程序进行通讯并指示其操做的接口。
- 命令行界面(CLI)客户端(
docker
命令)。

- docker CLI 经过 REST API 或者 CLI 命令控制 daemon 或者与之交互
- daemon 建立管理对象,例如 images, containers, networks, and volumes
application
- 容器很是适合持续集成和持续交付(CI / CD)工做流程
- Docker的可移植性和轻量级的特性还使您能够轻松地动态管理工做负载,并根据业务需求指示实时扩展或拆除应用程序和服务
- 在同一硬件上运行更多工做负载
namespaces
Docker 使用一种称为 namespaces
提供容器的隔离工做区的技术。运行容器时,Docker 会为该容器建立一组 命名空间。安全
这些名称空间提供了一层隔离。容器的每一个方面都在单独的名称空间中运行,而且对其的访问仅限于该名称空间。服务器
Docker Engine 在Linux上使用如下名称空间:网络
pid
:进程隔离(PID:process ID)
net
:管理网络接口(NET:networking)
ipc
:管理访问IPC资源(IPC:interProcess communication)
mnt
:管理文件系统挂载点(MNT:mount)
uts
:隔离内核和版本标识符。(UTS:Unix timesharing system)