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层

依赖层

代码层

优点:

节省空间

复用层

增量更新

相关推荐
сокол1 天前
【网安-Web渗透测试-靶场系列】AWD-Platform(ctf-hub)
linux·服务器·ubuntu·网络安全·docker
月走乂山1 天前
Windows 10 WSL2 安装问题排查与解决全记录
windows·docker·hyper-v·故障排查·wsl2
SuniaWang1 天前
《Agentx专栏》03-架构设计:AgentX的六层架构是如何生长出来的
java·数据库·redis·docker·ai·架构
云游牧者1 天前
K8S-Helm包管理全解-从入门到Chart开发实战指南
云原生·容器·kubernetes·helm·chart模板
WAIT_TIME1 天前
基于 Docker 快速构建 MySQL InnoDB Cluster 高可用集群与 Router 读写分离
mysql·docker·集群·innodb cluster
秋漓1 天前
Docker学习与使用
学习·docker·容器
%KT%1 天前
Windows安装wsl2和docker desktop,部署qdrant向量数据库
运维·docker·容器
PythonAI实战君1 天前
Docker Compose 部署 MySQL 中文乱码避坑指南
docker·容器
PythonAI实战君1 天前
若依后台管理系统 - Docker Compose 阿里云部署指南
后端·docker