跳转到内容

Docker基本概念

来自代码酷
Admin留言 | 贡献2025年5月1日 (四) 01:55的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

Docker基本概念[编辑 | 编辑源代码]

Docker是一个开源的容器化平台,用于开发、部署和运行应用程序。它通过容器技术将应用程序及其依赖项打包在一起,确保在任何环境中都能一致运行。本节将详细介绍Docker的核心概念,包括容器、镜像、仓库等,并辅以示例和图表帮助理解。

什么是Docker?[编辑 | 编辑源代码]

Docker利用操作系统级虚拟化(容器化)来隔离应用程序的运行环境。与传统的虚拟机(VM)不同,Docker容器共享主机操作系统的内核,因此更加轻量级且启动更快。Docker的核心组件包括:

  • Docker Engine:运行和管理容器的核心服务。
  • Docker镜像(Image):容器的静态模板,包含运行应用程序所需的代码、库和配置。
  • Docker容器(Container):镜像的运行实例。
  • Docker仓库(Registry):存储和分发镜像的中心,如Docker Hub。

Docker核心概念[编辑 | 编辑源代码]

1. 镜像(Image)[编辑 | 编辑源代码]

Docker镜像是一个只读模板,用于创建容器。镜像由多层文件系统构成,每一层代表一个修改(如安装软件或添加文件)。镜像可以从Docker Hub或其他仓库拉取,也可以自定义构建。

示例:拉取并运行一个Nginx镜像

# 从Docker Hub拉取Nginx镜像
docker pull nginx

# 运行Nginx容器
docker run -d -p 8080:80 --name my-nginx nginx

输出:

Status: Downloaded newer image for nginx:latest
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
abc123def456   nginx     "/docker-entrypoint.…"   2 seconds ago   Up 1 second    0.0.0.0:8080->80/tcp   my-nginx

解释:

  • docker pull nginx:从Docker Hub下载Nginx镜像。
  • docker run:启动一个容器。-d表示后台运行,-p 8080:80将主机的8080端口映射到容器的80端口,--name指定容器名称。

2. 容器(Container)[编辑 | 编辑源代码]

容器是镜像的运行实例。容器可以被启动、停止、删除或暂停。每个容器都是独立的,拥有自己的文件系统、网络和进程空间。

示例:查看运行中的容器

docker ps

输出:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
abc123def456   nginx     "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   0.0.0.0:8080->80/tcp   my-nginx

3. 仓库(Registry)[编辑 | 编辑源代码]

Docker仓库是存储和分发镜像的中心。Docker Hub是默认的公共仓库,用户也可以搭建私有仓库(如Harbor)。

示例:推送自定义镜像到Docker Hub

# 登录Docker Hub
docker login

# 标记镜像
docker tag my-image username/my-image:latest

# 推送镜像
docker push username/my-image:latest

Docker架构[编辑 | 编辑源代码]

Docker采用客户端-服务器架构:

  • Docker客户端(CLI):用户通过命令行与Docker交互。
  • Docker守护进程(Daemon):负责构建、运行和管理容器。
  • Docker仓库:存储镜像。

graph LR A[Docker客户端] -->|发送命令| B[Docker守护进程] B -->|拉取/推送| C[Docker仓库] B -->|管理| D[容器]

实际应用场景[编辑 | 编辑源代码]

场景1:开发环境标准化[编辑 | 编辑源代码]

开发团队使用Docker镜像定义一致的开发环境,避免“在我机器上能运行”的问题。

场景2:微服务部署[编辑 | 编辑源代码]

每个微服务运行在独立的容器中,通过Docker Compose或Kubernetes编排。

示例:使用Docker Compose启动多容器应用

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example

总结[编辑 | 编辑源代码]

Docker通过容器化技术解决了应用程序在不同环境中运行一致性的问题。核心概念包括镜像、容器和仓库,它们共同构成了Docker的生态系统。掌握这些基础概念是进一步学习Docker编排(如Kubernetes)和高级功能(如多阶段构建)的关键。