Docker

一、Docker 是什么

Docker是一种"容器化(Containerization)平台"。

它的核心作用:

把应用程序 + 运行环境 + 依赖库 打包到一个容器里,然后在任何机器上稳定运行。

你可以把 Docker 理解成:

VM(虚拟机)的轻量版

程序运行的"标准集装箱"

"一次打包,到处运行"

二、为什么会有 Docker

先看传统开发的问题。

1. 环境不一致问题

比如:

你开发了一个 C++ 后端程序:

本地 Ubuntu 20 能跑

测试服务器 Ubuntu 22 崩了

同事电脑缺少某个库

Python 版本不一致

OpenSSL 版本不同

于是经典问题出现:

"我电脑上是好的啊!"

Docker 就是解决:

"环境一致性"

三、Docker 的核心思想

Docker 的思想非常简单:

把程序运行所需的一切:

代码

库

配置

运行环境

系统工具

全部打包。

形成:

Container(容器)

容器启动后:

无论在哪台机器:

云服务器

公司服务器

个人电脑

测试环境

结果都一样。

四、Docker 和虚拟机区别

虚拟机:

每个 VM 都有:

自己的操作系统

内核

驱动

非常重

例如:

一个 Ubuntu VM:

几 GB

启动几十秒

Docker 容器:

共享宿主机内核

不需要完整 OS

非常轻量

特点:

MB 级别

秒级启动

可同时运行大量容器

五、Docker架构

Docker 采用客户端-服务器架构。Docker 客户端与 Docker 守护进程,负责构建、运行和 分发你的 Docker 容器。Docker 客户端和守护进程可以 运行在同一台系统上,或者你可以将 Docker 客户端连接到远程 Docker 戴蒙。Docker 客户端和守护进程通过 REST API 在 UNIX 上通信 套接字或网络接口。另一个 Docker 客户端是 Docker Compose, 这样你就能处理由一组容器组成的应用程序。

六、Docker的核心组成

名称 类比
Image(镜像) 安装包
Container(容器) 正在运行的软件
Repository(仓库) 应用商店

七、Image(镜像)

镜像:

是一个只读模板

里面包含:

程序

环境

依赖

例如:

Ubuntu 镜像

MySQL 镜像

Redis 镜像

Nginx 镜像

你可以理解:

镜像 = 类(class)

容器 = 对象(object)

查看镜像

docker images

拉取镜像

例如:

docker pull ubuntu

意思:

从 Docker Hub 下载 Ubuntu 镜像。

八、Container(容器)

容器:

是镜像运行后的实例

例如:

docker run ubuntu

会:

创建容器

启动容器

查看容器

docker ps

查看运行中的容器

docker ps -a

查看所有容器

九、Docker 的底层原理

这是核心。

Docker 本质上:

不是虚拟机

它依赖 Linux 内核特性:

1. Namespace(命名空间)

作用:

隔离

让容器觉得:

自己有独立进程

独立网络

独立文件系统

实际上:

只是 Linux 隔离机制。

2. Cgroups

作用:

资源限制

限制容器:

CPU

内存

IO

例如:

docker run -m 512m ubuntu

限制最大内存:

512MB。

3. UnionFS(联合文件系统)

Docker 镜像是:

分层的

例如:

Ubuntu层

Python层

依赖层

代码层

优点:

节省空间

复用层

增量更新

相关推荐
m0_6174939418 分钟前
昇腾 NPU Docker 部署实战:解决 stub library 报错并实现模型正常加载
运维·docker·容器
xixiaoyunya1 小时前
Docker 常用命令与实战:从入门到部署一个简单应用
docker·容器·eureka
吴声子夜歌1 小时前
Docker入门与实战——Docker Swarm模式(跨主机容器集群管理)
docker
flytalei4 小时前
GitOps 实战:基于 Argo CD 的 Kubernetes 应用版本回滚
云原生·容器·kubernetes
pirateeee4 小时前
在ubuntu中通过 docker 搭建 yocto 开发环境
ubuntu·docker·eureka
墨神谕4 小时前
Docker 数据卷(Volume)详解:Dockerfile 声明、Docker Compose 挂载宿主机目录及持久化实战
运维·docker·容器
zh73145 小时前
Docker Desktop docker_data.vhdx 使用时间长了过大,解决办法
运维·docker·容器
墨神谕5 小时前
Docker Compose 从入门到实战:核心概念、YAML 配置详解、常用命令与多容器部署
运维·docker·容器
Tronlong创龙5 小时前
TLT153工控机:Docker 环境部署与容器开发实践(上)
docker·嵌入式开发·硬件开发·工业控制·工业开发板
KIDULT°5 小时前
【K8s 实战】Volume 存储、PV/PVC、ConfigMap 与 Secret 完整实验
云原生·容器·kubernetes