Docker 是近年来最流行的容器化技术之一,它通过容器(Container)将应用及其依赖打包,实现“一次构建,到处运行”。在开发、测试和部署环节,Docker 都能显著提高效率和一致性。本文将带你从基础概念到常用操作,再到示例配置,快速掌握 Docker 入门技能。
一、Docker 基础概念
1. 容器(Container)
容器是一种轻量级、可移植的虚拟化技术,它包含应用及其所有依赖,但共享宿主机的内核资源。相比传统虚拟机,容器启动更快,占用更少资源。
2. 镜像(Image)
镜像是容器的静态模板,包含应用运行所需的文件和配置。容器是镜像的运行实例。你可以把镜像理解为“快照”,容器则是镜像启动后的运行状态。
3. Docker Engine
Docker Engine 是 Docker 的核心组件,负责管理镜像和容器。它可以在 Windows、macOS 或 Linux 上安装。
4. Docker Hub
Docker Hub 是官方提供的镜像仓库,类似 GitHub,用于存储和分享镜像。你可以直接拉取官方镜像,也可以推送自定义镜像。
二、安装 Docker
Docker 官方提供跨平台安装方式:
- Windows / macOS:下载 Docker Desktop 安装包并安装
- Linux:通过包管理器安装 Docker Engine,例如:
sudo apt update
sudo apt install docker.io -y
sudo systemctl enable --now docker
安装完成后,运行:
docker --version
确认 Docker 正确安装。
三、常用 Docker 命令
1. 镜像操作
| 命令 | 作用 |
|---|---|
docker pull <镜像名> | 拉取镜像 |
docker images | 查看本地镜像列表 |
docker rmi <镜像名> | 删除镜像 |
2. 容器操作
| 命令 | 作用 |
|---|---|
docker run -it --name mycontainer ubuntu /bin/bash | 启动一个容器并进入交互模式 |
docker ps | 查看运行中的容器 |
docker ps -a | 查看所有容器(包括已停止的) |
docker stop <容器名> | 停止容器 |
docker rm <容器名> | 删除容器 |
3. 其他实用命令
docker logs <容器名> # 查看容器日志
docker exec -it <容器名> /bin/bash # 进入正在运行的容器
docker stats # 查看容器实时资源使用情况
四、Dockerfile 示例
Dockerfile 是定义镜像的文件,通过它可以自定义构建镜像。
示例:创建一个基于 Node.js 的镜像
# 使用官方 Node 镜像作为基础镜像
FROM node:18
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制项目文件
COPY . .
# 容器启动命令
CMD ["node", "index.js"]
# 对外暴露端口
EXPOSE 3000
构建镜像:
docker build -t my-node-app .
运行容器:
docker run -p 3000:3000 my-node-app
五、docker-compose.yml 示例
docker-compose 用于定义和管理多容器应用。示例:Node.js + MongoDB
version: "3.8"
services:
app:
build: .
container_name: my-node-app
ports:
- "3000:3000"
environment:
- MONGO_URI=mongodb://mongo:27017/mydb
depends_on:
- mongo
mongo:
image: mongo:6
container_name: my-mongo
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
volumes:
mongo-data:
启动服务:
docker-compose up -d
停止服务:
docker-compose down
六、示例项目结构
my-node-app/
├── Dockerfile
├── docker-compose.yml
├── package.json
├── package-lock.json
└── index.js
- Dockerfile:定义镜像构建步骤
- docker-compose.yml:定义多容器服务
- index.js:应用入口
- package.json:依赖配置
七、学习小结
- Docker 提供轻量化、可移植的容器环境,适合现代应用开发与部署
- 镜像和容器是 Docker 的核心概念
- Dockerfile 和 docker-compose.yml 是构建和管理容器的关键文件
- 常用命令:
docker run,docker ps,docker build,docker-compose up等
八、后续学习方向
- 学习 Docker 网络和数据卷(Volumes)
- 深入理解镜像层(Layer)和缓存机制
- 使用 Docker Swarm 或 Kubernetes 做容器编排
- 在 CI/CD 流程中集成 Docker
文章评论