Linux2026年02月17日
Docker 入门指南:容器化技术基础
Docker 入门指南:容器化技术基础
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包到轻量级、可移植的容器中。
什么是 Docker?
Docker 使用容器技术,将应用程序及其运行环境打包在一起,实现:
- 一致性:开发、测试、生产环境一致
- 隔离性:应用之间相互隔离
- 轻量级:比虚拟机更轻量
- 可移植性:一次构建,到处运行
核心概念
镜像(Image)
镜像是只读的模板,用于创建容器。可以理解为应用程序的"快照"。
容器(Container)
容器是镜像的运行实例,可以启动、停止、删除。
仓库(Repository)
仓库用于存储和分发镜像,类似 Git 仓库。
基本命令
镜像操作
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi image_id
docker rmi image_name:tag
容器操作
# 运行容器
docker run -d -p 80:80 --name my-nginx nginx
# 查看运行中的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 停止容器
docker stop container_id
# 启动容器
docker start container_id
# 重启容器
docker restart container_id
# 删除容器
docker rm container_id
# 查看容器日志
docker logs container_id
docker logs -f container_id # 实时查看
# 进入容器
docker exec -it container_id /bin/bash
常用参数说明
-d: 后台运行(detached)-p: 端口映射(host:container)--name: 指定容器名称-v: 数据卷挂载-e: 设置环境变量-it: 交互式终端
Dockerfile 编写
Dockerfile 是用于构建镜像的文本文件:
# 基础镜像
FROM node:18-alpine
# 工作目录
WORKDIR /app
# 复制文件
COPY package*.json ./
RUN npm install
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动命令
CMD ["npm", "start"]
构建镜像
docker build -t my-app:latest .
实际应用示例
运行 Web 服务器
# 运行 Nginx
docker run -d -p 8080:80 --name nginx-server nginx
# 访问 http://localhost:8080
运行数据库
# 运行 MySQL
docker run -d \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=myapp \
-p 3306:3306 \
mysql:8.0
数据持久化
# 使用数据卷
docker run -d \
--name mysql-server \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
mysql:8.0
Docker Compose
Docker Compose 用于定义和运行多容器应用:
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: password
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
使用 Compose
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看日志
docker-compose logs
最佳实践
- 使用 .dockerignore:排除不需要的文件
- 多阶段构建:减小镜像体积
- 使用官方镜像:安全可靠
- 合理使用缓存:优化构建速度
- 不要以 root 运行:提高安全性
总结
Docker 是现代应用部署的重要工具。掌握 Docker 基础后,可以:
- 简化开发环境配置
- 提高应用部署效率
- 实现微服务架构
- 优化资源利用
继续学习 Docker 的高级特性,如网络、存储、安全等,将进一步提升你的容器化技能。