Docker教程 - 容器化改变软件交付方式
Docker是一款开源的容器化平台,它将应用及其依赖打包到轻量级容器中,实现"一次构建,到处运行"。Docker解决了环境不一致的痛点,是现代软件交付和DevOps的核心工具。本教程将从基础概念到实战部署,助你全面掌握Docker。
一、Docker简介
Docker于2013年发布,基于Linux内核的cgroup和namespace技术实现容器隔离。与虚拟机相比,Docker容器无需完整的操作系统,启动速度快、资源占用少,可在单机上运行数十甚至上百个容器。
| 特性 | 描述 |
|---|---|
| 轻量级 | 共享宿主机内核,资源占用少 |
| 一致性 | 开发、测试、生产环境完全一致 |
| 快速启动 | 容器秒级启动,远快于虚拟机 |
| 生态丰富 | Docker Hub拥有海量官方镜像 |
二、你将学到什么
- 核心概念:镜像、容器、仓库、Docker引擎
- 镜像管理:pull、push、build、tag、Dockerfile
- 容器操作:run、start、stop、exec、logs、inspect
- Dockerfile:FROM、RUN、COPY、CMD、ENTRYPOINT
- 数据管理:Volume、Bind Mount、数据持久化
- Compose编排:docker-compose多容器应用编排
三、代码示例
Dockerfile与docker-compose示例:
# Dockerfile: 构建Node.js应用镜像
FROM node:18-alpine
WORKDIR /app
# 先拷贝依赖文件,利用缓存层
COPY package.json package-lock.json ./
RUN npm install --production
# 拷贝源代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动命令
CMD ["node", "server.js"]
# ---- docker-compose.yml: 编排多容器 ----
# version: "3.8"
# services:
# web:
# build: .
# ports:
# - "3000:3000"
# environment:
# - NODE_ENV=production
# - DB_HOST=db
# depends_on:
# - db
# db:
# image: mysql:8.0
# environment:
# MYSQL_ROOT_PASSWORD: secret
# MYSQL_DATABASE: app
# volumes:
# - db_data:/var/lib/mysql
# volumes:
# db_data:
常用Docker命令:
# 构建镜像
docker build -t myapp:1.0 .
# 运行容器
docker run -d --name app -p 3000:3000 myapp:1.0
# 查看运行中的容器
docker ps
docker logs -f app
# 进入容器
docker exec -it app sh
# 使用Compose启动
docker-compose up -d
docker-compose logs -f
docker-compose down
四、适合人群
- 后端开发者,需要部署应用
- 运维工程师,Docker是DevOps基础
- 想要学习微服务架构的开发者
- 希望解决环境配置问题的团队
五、学习建议
Docker上手容易但深入难。建议先掌握镜像和容器的基本操作,再学习Dockerfile编写和镜像优化(多阶段构建、层缓存)。docker-compose是本地开发和测试的利器,务必熟练使用。之后可以进阶学习Kubernetes容器编排,这是云原生技术的核心。
🎯 开始你的Docker学习之旅吧!
课程信息:
共 4 个章节
暂无内容