Docker

发布于:2025-05-22 ⋅ 阅读:(23) ⋅ 点赞:(0)

在这里插入图片描述

Docker 是一个开源的容器化平台,它可以把应用程序及其依赖项打包在一个轻量级、可移植的容器中运行,从而实现跨环境一致性部署

典型应用场景:

  • 微服务架构部署(如使用 Docker Compose)
  • 持续集成/持续部署(CI/CD)
  • 测试环境快速搭建
  • 多版本软件运行(如不同版本的数据库或编译环境)

原理

Docker 是目前非常流行的容器技术,本质上是对 Linux 内核能力的一种封装,比如命名空间(Namespace)、控制组(Cgroups)、联合文件系统(UnionFS)等。

Docker 容器是运行在宿主 Linux 内核上的隔离进程,它模拟了一个“尽可能接近但受限的 Linux 用户空间”。他并没有像虚拟机里的操作系统如 ubuntu 一样去虚拟化模拟独立内核,只是文件系统和环境变量像 CentOS。

组件 作用
Docker Client 用户接口,接收命令如 docker run
Docker Daemon 后台守护进程,负责创建、管理容器等
Docker Image 容器的只读模板,基于层构建
Docker Container 运行时实体,基于镜像 + 文件系统

(‘外驱’,‘内驱’,‘驱动对象’,‘存储驱动产物’)

Docker 利用 Linux 的 Namespace、Cgroups、UnionFS 实现进程级的隔离和资源控制,使得多个容器共享内核、快速启动、轻量运行。

  • Namespace(命名空间)— 提供隔离
    如容器有自己的网络栈,PID空间
  • Cgroups(控制组)— 控制资源
    限制和统计容器使用的系统资源,如 CPU、内存、磁盘、网络 等。
  • UnionFS(联合文件系统)— 构建镜像
    镜像是只读的,运行时会有“可写层”来存储产生的数据。

核心概念

镜像(Image)
类似于操作系统的“安装包”,是一个只读模板,包含运行容器所需的全部内容(代码、库、依赖等)。可以从 Docker Hub 等仓库拉取。

容器(Container)
镜像运行后的实例,是一个隔离的运行环境。容器之间互不影响,常用于部署微服务、测试等。

Dockerfile
构建镜像的脚本文件,定义了镜像构建过程中的各个步骤。

仓库(Registry)
用于存储和分发镜像,如官方的 Docker Hub。

优势

轻量级:相比虚拟机,Docker 容器共享宿主内核,启动快,占用资源少。

可移植性:在任何支持 Docker 的环境下运行相同的容器,避免“在我电脑上没问题”的问题。

一致性:开发、测试、生产环境保持一致,提高部署稳定性。

隔离性:每个容器运行在独立环境中,不会互相干扰。

自动化构建与部署:结合 CI/CD 工具,可以实现自动构建和持续部署。

常用命令示例

# 拉取镜像
docker pull ubuntu

# 运行一个容器
docker run -it ubuntu /bin/bash

# 查看正在运行的容器
docker ps

# 构建镜像
docker build -t myapp .

# 停止并删除容器
docker stop 容器ID && docker rm 容器ID