Docker
了解 Docker
Docker是什么?
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成一个可移植的容器,这样就可以在任何支持 Docker 的系统上运行应用程序。
与虚拟机比较
特性 | Docker | 虚拟机 (VM) |
---|---|---|
虚拟化层级 | 操作系统级别虚拟化 (OS-level) | 🟢硬件级别虚拟化 (Hypervisor-level) |
启动时间 | 🟢毫秒~秒级启动 | 分钟级启动 |
资源消耗 | 🟢轻量级,占用较少资源 | 相对较重,每个虚拟机需要完整的操作系统 |
性能开销 | 🟢较小(共享宿主机内核) | 较大(每个虚拟机有完整的操作系统) |
隔离性 | 容器之间共享宿主操作系统内核,隔离性较弱 | 🟢完全隔离,每个虚拟机都有独立的操作系统 |
可移植性 | 🟢高(可以在任何安装 Docker 的平台运行) | 较低(受限于虚拟机软件的兼容性) |
部署效率 | 🟢极高(可以快速部署和迁移) | 较低(启动和配置时间较长) |
兼容性 | 由于基于 Linux 的技术实现,在 Windows 和 macOS 上使用 Doceker 需安装 Docker-Desktop 模拟出一个 Linux 环境。 | 🟢支持主流操作系统 |
使用场景 | APP开发环节,打包依赖环境。APP部署环节,提供软件隔离环境。APP运维,群组管理。 | 提供硬件级的操作系统。 |
理解容器和虚拟机的关系
我们购买的云服务器,实际上是 KVM 虚拟出来的主机。也许你会在云服务器上部署 Docker 应用,或者 Docker 应用集群。
图1:运行4个业务应用的 VM 服务器,VM 将消耗掉服务器大量资源。
图2:运行4个业务应用的 Docker 服务器,节省 VM 资源的消耗。
好处:更低的服务器配置,更少的成本,更快的速度。
Docker的架构
图1:来自 docker 文档
图2:来自《深入浅出Docker》
使用 Docker
安装 Docker
-
安装
# ubuntu/debian
sudo apt update
sudo apt install docker.io实际安装了以下组件:
- Docker Engine(Docker 引擎):
- Docker Daemon (dockerd):负责管理容器的生命周期,包括容器的创建、启动、停止、删除等。
- Docker REST API:用于与 Docker 引擎进行远程通信,支持程序化管理容器和镜像。
- Docker 客户端: - Docker CLI (Command Line Interface):用户与 Docker 交互的命令行工具,通过它可以执行各种 Docker 命令。
- Docker Engine(Docker 引擎):
-
验证是否安装成功
sudo docker --version
有时候 守护进程可能没有启动,使用命令启动
sudo systemctl start docker
-
加入 docker 组
sudo usermod -aG docker $USER
注销后生效。加入 docker 用户组后,使用不需要以 sudo 运行 docker 命令。
-
配置 Docker 仓库的镜像地址(由于国内网络无法访问 Docker 仓库)
/etc/docker/daemon.json{
"registry-mirrors": [
"https://docker.1panel.live"
]
}
接下来便能通过 Docker 命令管理 Docker 应用。