
概述 #
本文介绍 Docker 的基本概念和实际部署流程。
Docker 是什么? #
Docker 是一个开源的应用容器引擎,让应用可以打包及其依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
核心概念 #
镜像 (Image) #
镜像是只读模板,用于创建容器。可以理解为运行容器的"配方"。
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 搜索镜像
docker search nginx容器 (Container) #
容器是镜像的运行实例。可以看作是一个简单的 Linux 环境。
# 运行容器
docker run -d -p 8080:80 nginx
# 查看运行容器
docker ps
# 查看所有容器
docker ps -a仓库 (Repository) #
存放镜像的地方,分为公共仓库和私有仓库。
实战示例 #
部署 Node.js 应用 #
# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]# 构建镜像
docker build -t my-node-app .
# 运行容器
docker run -d -p 3000:3000 my-node-app部署 MySQL #
# 拉取镜像
docker pull mysql:8.0
# 运行容器
docker run -d \
--name my-mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=myapp \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
mysql:8.0Docker Compose #
用于定义和运行多容器 Docker 应用。
# docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- app
app:
build: ./app
ports:
- "3000:3000"# 启动所有服务
docker-compose up -d
# 查看状态
docker-compose ps
# 停止所有服务
docker-compose down最佳实践 #
- 使用 .dockerignore - 减少镜像大小
- 多阶段构建 - 减小生产镜像
- 非 root 用户 - 提高安全性
- 健康检查 - 确保容器正常运行
- 资源限制 - 防止资源耗尽
总结 #
Docker 简化了应用的部署和运维,是现代 DevOps 的必备技能。