资讯动态

Docker 的基本概念及其核心组件。

发布时间:2026/9/7 19:27:08 来源:尧图企业网站定制
一、Docker 的基本概念1.1 什么是容器容器是一种轻量级的虚拟化技术它允许你在隔离的进程中运行应用程序及其依赖。类比理解虚拟机像一栋独立别墅有自己的地基、水电系统内核、装修依赖容器像公寓楼里的一个单元共享大楼的水电系统宿主机内核但有自己的墙壁隔离namespace和装修文件系统1.2 Docker 的三大核心概念概念图标定义类比镜像Image一个只读的模板包含运行应用所需的代码、运行时、库、环境变量和配置文件类的定义/安装光盘容器Container镜像的运行实例可以被启动、停止、删除类的实例/运行中的程序仓库Repository存储和分发镜像的地方如 Docker HubGit 仓库/GitHub二、深入理解三大概念2.1 镜像Image镜像是 Docker 世界的**“源代码”**它是一个分层存储的文件系统。# 一个简单的 Dockerfile FROM ubuntu:20.04 # 基础镜像层 RUN apt-get update \ # 在这一层安装软件 apt-get install -y python3 COPY app.py /app/ # 复制文件层 CMD [python3, /app/app.py] # 元数据层镜像的分层结构--------------------- | 容器层 (可写) | -- 容器启动时创建 --------------------- | CMD [python3] | -- 元数据层 --------------------- | COPY app.py | -- 镜像层3 --------------------- | apt-get install | -- 镜像层2 --------------------- | ubuntu:20.04 | -- 基础镜像层 ---------------------分层的好处复用多个镜像可以共享相同的基础层高效下载时只下载变化的层节省空间相同层只存一份2.2 容器Container容器是镜像的运行态。当镜像被加载到内存并执行时就变成了容器。# 从镜像创建并启动容器dockerrun-d--namemyapp nginx# 查看运行中的容器dockerps# 进入容器内部dockerexec-itmyappbash# 停止容器dockerstop myapp# 删除容器dockerrmmyapp容器的生命周期Created → Running → Paused → Stopped → Deleted ↑ ↓ ↓ └────────┘ └── Removed2.3 仓库Repository仓库是存储和分发镜像的服务。# 从 Docker Hub 拉取镜像dockerpull ubuntu:20.04# 给镜像打标签dockertag myapp:latest myusername/myapp:v1# 推送到自己的仓库dockerpush myusername/myapp:v1# 从私有仓库拉取dockerpull myregistry.com:5000/myapp:v1仓库类型类型示例说明公有仓库Docker Hub官方镜像公共镜像私有仓库Harbor, Nexus企业内部使用云服务商ACR, ECR阿里云、AWS 的镜像服务三、Docker 的核心组件Docker 采用C/S客户端/服务器架构由三个核心组件组成REST APIDocker ClientDocker DaemonContainerdrunC容器进程3.1 Docker Client客户端用户与 Docker 交互的命令行工具。# 客户端命令dockerbuild# 构建镜像dockerpull# 拉取镜像dockerrun# 运行容器docker-compose# 管理多容器应用特点将用户命令转换为 REST API 请求可以连接远程 Docker 守护进程支持多种认证方式3.2 Docker Daemon守护进程运行在宿主机上的后台服务负责管理容器的生命周期。# 查看守护进程状态systemctl statusdocker# 查看守护进程配置dockerinfo# 守护进程配置文件 /etc/docker/daemon.json{registry-mirrors:[https://xxx.mirror.aliyuncs.com],storage-driver:overlay2,log-driver:json-file,log-opts:{max-size:10m,max-file:3}}职责接收客户端请求管理镜像、容器、网络、卷与 containerd 通信3.3 Containerd一个工业级的容器运行时管理工具是 Docker 与操作系统之间的桥梁。# 查看 containerd 状态systemctl status containerd# containerd 配置文件 /etc/containerd/config.toml职责管理容器生命周期创建、启动、停止镜像传输和存储网络管理调用 runC3.4 runC轻量级的容器运行时真正负责创建和运行容器。# 直接使用 runC 运行容器不经过 Dockerrunc run mycontainer特点遵循 OCIOpen Container Initiative标准基于 Linux namespace 和 cgroups极简设计只做一件事四、Docker 的辅助组件4.1 Docker Registry镜像存储服务。# 运行私有 Registrydockerrun-d-p5000:5000--nameregistry registry:2# 推送镜像到私有 Registrydockertag myapp localhost:5000/myappdockerpush localhost:5000/myapp4.2 Docker Compose定义和运行多容器应用的工具。# docker-compose.ymlversion:3.8services:web:build:. ports:-8080:8080redis:image:redis:alpine mysql:image:mysql:8.0environment:MYSQL_ROOT_PASSWORD:root# 一键启动整套环境docker-composeup-d# 查看日志docker-composelogs-f# 停止并删除docker-composedown4.3 Docker SwarmDocker 原生的容器编排工具。# 初始化 swarmdockerswarm init# 部署服务dockerservicecreate--replicas3--nameweb nginx# 查看服务dockerservicels五、Docker 的工作原理5.1 容器是如何隔离的Docker 利用 Linux 内核的两种技术实现隔离# 查看容器的 namespacels-l/proc/pid/ns/Namespace隔离内容作用pid进程ID容器内只能看到自己的进程net网络独立的网络栈ipc进程通信隔离 IPC 资源mnt挂载点独立的文件系统视图uts主机名独立的主机名user用户ID独立的用户映射5.2 容器如何限制资源通过cgroups控制组限制资源使用# 查看容器的 cgroupsls/sys/fs/cgroup/memory/docker/container-id/# 限制内存dockerrun--memory512m nginx# 限制 CPUdockerrun--cpus2nginx六、Docker 的生命周期流程图容器运行镜像存储镜像构建Dockerfiledocker build镜像本地仓库docker push远程仓库docker pulldocker run创建容器层分配网络/存储启动进程运行中docker stop已停止docker rm删除容器七、总结组件作用类比镜像Image打包应用和依赖类/安装包容器Container运行应用对象/运行的程序仓库Registry存储分发镜像Git 仓库Docker Client用户操作接口命令行工具Docker Daemon管理容器后台服务Containerd容器运行时容器管家runC真正运行容器容器执行者Docker Compose编排多容器项目管家一句话总结Docker 镜像打包应用 容器隔离运行 仓库分发共享通过 Client-Daemon-Containerd-runc 的架构实现了应用的标准化打包和运行。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价