docker|docker 基础架构
前言
本文介绍docker的基础架构。
环境
【docker|docker 基础架构】操作系统:centos7
docker版本:docker-ce: 18.09
正文
简介
docker是典型的 c/s 架构。
通过docker-ce安装的docker,会默认安装两个组件(通过 docker version 命令可以查看):
- docker client:这里安装的是cli,提供命令行功能。
- docker server:docker具体功能的实现者。也称之为 docker engine、docker daemon。
docker client 可以有多种形式,比如sdk、cli。cli为用户提供命令行方式,sdk为程序提供包形式。
docker的架构里还包含一个组件:docker registry。用于存储容器的镜像。
文章图片
docker基础架构 docker 实现原理 主要依赖:Namespaces、Control groups、UnionFS
Namespaces: 命名空间,主要起隔离作用。
其中包含:
pid namespace:进程隔离
net namespace:网络管理
ipc namespace:IPC(进程间通信)资源管理
mnt namespace:文件系统挂载管理
uts namespace:内核和版本标识符隔离。
Control groups: 控制组:限制容器对物理资源的使用,比如cpu、内存。
依赖技术:cgroups。
UnionFS: 联合文件系统:为容器提供块功能,也就是文件系统。
也可使用其它类似UnionFS的软件:例如 AUFS, btrfs, vfs, DeviceMapper
Container format 容器格式:这是一个逻辑概念。
表示,将 Namespaces、Control groups、UnionFS 组合起来形成的一种容器。目前的组合方式称之为 libcontainer,这也是当前唯一提供的方式。
引入该概念,因为以后可能会出现其它形式的容器。
docker 创建一个容器的主要步骤
- 拉取镜像
- 创建一个容器(此时只是创建,还未启动)
- 为容器分配文件系统
- 为容器创建网络
- 启动容器。
docker run -i -t ubuntu /bin/bash
此时无论ubuntu镜像的CMD是什么都不会执行,而会去执行 /bin/bash。
容器的生命周期
文章图片
image.png 这张图已经十分详细,不再赘述。若看不懂,也仅仅是因为不熟悉docker的使用。
扩展 无。
参考 https://docs.docker.com/engine/docker-overview/#docker-architecture
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- Python基础|Python基础 - 练习1
- Java|Java基础——数组
- Java基础-高级特性-枚举实现状态机
- 营养基础学20180331(课间随笔)??
- iOS面试题--基础
- HTML基础--基本概念--跟着李南江学编程
- typeScript入门基础介绍
- c++基础概念笔记
- 集体释放