返回目录

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 个章节

暂无内容