Docker设计思想 – 快速理解上手

Docker设计思想

一个程序的执行需要CPU、存储资源,与外界通信时需要网络资源。如果对这些计算资源进行切割、限制、隔离和封装,就能使计算资源能够成为独立调度的单位:按需分配、可回收复用。这个方法称为“虚拟化”。由此诞生了虚拟机和Docker

图源K8S文档

传统部署直接在OS上跑应用,无法控制应用占用的计算资源配额;虚拟机用VM封装计算资源,可将VM跑在单个CPU内核上,但应用跑在VM中单独运行的OS上,再经由硬件抽象层Hypervisor调用宿主机OS的系统调用,开销较大;Docker用Container封装计算资源,容器是一个资源受限的entrypoint进程,复用同一个宿主机OS内核,跑容器私有的OS文件数据,相比虚拟机更加“轻量化”

在容器设计中,计算资源之间的隔离由Linux的Namespace机制实现:使得容器仅可访问设定的进程、网络、存储等信息。计算资源的分割和限制通过Linux的Cgroups机制实现:设置了entrypoint进程(及其创建的子进程)可使用的CPU、带宽、存储上限

但在容器中执行的宿主机全局读命令会依赖于宿主机信息,全局写命令会影响到宿主机,进而影响到所有容器

搭建环境

宿主机环境Ubuntu 22.04.1 LTS

Docker Engine安装

更新apt软件源

sudo apt-get update

安装CA证书、curl传输工具、gnupg加密工具

sudo apt-get install ca-certificates curl gnupg

创建目录,添加gpg密钥

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

设置repository

echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新apt软件源

sudo apt-get update

安装最新版本Docker Engine核心组件

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

参考资料

Kubernetes Documentation Concepts Overview
CNCF X 阿里巴巴云原生技术公开课
Docker官网手册

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

©2018-2024 Howell版权所有 备案号:冀ICP备19000576号