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