Docker基本概念
外观
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仓库:存储镜像。
实际应用场景[编辑 | 编辑源代码]
场景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)和高级功能(如多阶段构建)的关键。