Docker 基础
核心知识点
1. Docker 概述
Docker 是一个开源的容器化平台,可以将应用程序及其依赖项打包到一个轻量级、可移植的容器中,确保应用在任何环境中都能以相同的方式运行。
1.1 容器 vs 虚拟机
传统虚拟机和Docker容器的主要区别:
┌─────────────────────────────────────────────────────────┐
│ 虚拟机架构 │
├─────────────────────────────────────────────────────────┤
│ 应用程序 A 应用程序 B 应用程序 C │
├─────────────────────────────────────────────────────────┤
│ Guest OS Guest OS Guest OS │
├─────────────────────────────────────────────────────────┤
│ Hypervisor (虚拟化管理程序) │
├─────────────────────────────────────────────────────────┤
│ 宿主操作系统 │
├─────────────────────────────────────────────────────────┤
│ 硬件层 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Docker 容器架构 │
├─────────────────────────────────────────────────────────┤
│ 应用程序 A 应用程序 B 应用程序 C │
├─────────────────────────────────────────────────────────┤
│ Docker Engine │
├─────────────────────────────────────────────────────────┤
│ 宿主操作系统 │
├─────────────────────────────────────────────────────────┤
│ 硬件层 │
└─────────────────────────────────────────────────────────┘1.2 Docker 核心概念
镜像
- 只读模板,包含运行应用所需的所有内容
- 可以理解为容器的"类"
- 分层存储,便于复用和更新
容器
- 镜像的运行实例
- 可以理解为镜像的"对象"
- 轻量级,启动快速
仓库
- 存储和分发镜像的地方
- Docker Hub 是最大的公共仓库
- 支持私有仓库
2. Docker 安装
2.1 在 Ubuntu 上安装 Docker
# 更新包索引
sudo apt update
# 安装必要的依赖包
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定版仓库
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
# 重新登录使组权限生效2.2 在 CentOS 上安装 Docker
# 安装必要的依赖包
sudo yum install -y yum-utils
# 添加 Docker 仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER3. Docker 基本命令
3.1 版本信息查看
# 查看 Docker 版本
docker --version
# 查看 Docker 详细信息
docker info
# 查看 Docker 系统信息
docker system info3.2 镜像相关命令
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest3.3 容器相关命令
# 运行容器
docker run -d -p 80:80 --name my-nginx nginx
# 查看运行中的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
# 停止容器
docker stop my-nginx
# 启动已停止的容器
docker start my-nginx
# 删除容器
docker rm my-nginx
# 查看容器日志
docker logs my-nginx
# 进入容器
docker exec -it my-nginx /bin/bash实用案例分析
案例 1:部署第一个 Web 应用
场景描述
快速部署一个 Nginx Web 服务器,用于测试 Docker 的基本功能。
操作步骤
# 1. 拉取 Nginx 镜像
docker pull nginx:alpine
# 2. 运行 Nginx 容器
# -d: 后台运行
# -p: 端口映射(宿主机端口:容器端口)
# --name: 容器名称
docker run -d -p 8080:80 --name my-web-server nginx:alpine
# 3. 查看容器状态
docker ps
# 4. 测试访问
curl http://localhost:8080
# 5. 查看容器日志
docker logs my-web-server
# 6. 进入容器查看文件
docker exec -it my-web-server /bin/sh
ls -la /usr/share/nginx/html/
exit
# 7. 停止并删除容器
docker stop my-web-server
docker rm my-web-server案例 2:使用自定义 HTML 页面
场景描述
创建一个自定义的 HTML 页面,并通过 Docker 容器提供服务。
操作步骤
# 1. 创建项目目录
mkdir ~/my-docker-web
cd ~/my-docker-web
# 2. 创建自定义 HTML 文件
cat > index.html << 'EOF'
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>我的 Docker 网站</title>
</head>
<body>
<h1>欢迎使用 Docker!</h1>
<p>这是通过 Docker 容器运行的网站。</p>
</body>
</html>
EOF
# 3. 运行容器并挂载本地目录
# -v: 目录挂载(宿主机目录:容器目录)
docker run -d \
-p 8080:80 \
-v $(pwd):/usr/share/nginx/html \
--name my-custom-web \
nginx:alpine
# 4. 测试访问
curl http://localhost:8080
# 5. 修改 HTML 文件
echo "<p>页面已更新!</p>" >> index.html
# 6. 再次测试,无需重启容器
curl http://localhost:8080
# 7. 清理
docker stop my-custom-web
docker rm my-custom-web案例 3:容器资源限制
场景描述
为容器设置 CPU 和内存使用限制,防止资源耗尽。
操作步骤
# 1. 运行容器并设置资源限制
# --cpus: 限制 CPU 使用量
# --memory: 限制内存使用量
docker run -d \
--name limited-container \
--cpus="0.5" \
--memory="512m" \
nginx:alpine
# 2. 查看容器资源使用情况
docker stats limited-container
# 3. 查看容器详细信息
docker inspect limited-container | grep -A 10 "Memory"
# 4. 清理
docker stop limited-container
docker rm limited-container最佳实践
使用官方镜像:优先使用 Docker Hub 上的官方镜像,确保安全性和稳定性。
指定镜像版本:在生产环境中使用具体版本号而非
latest标签,避免意外更新。合理设置资源限制:为容器设置 CPU 和内存限制,防止单个容器耗尽系统资源。
使用数据卷:通过数据卷持久化重要数据,避免容器删除后数据丢失。
清理无用资源:定期清理未使用的镜像和容器,释放磁盘空间。
# 清理所有停止的容器
docker container prune
# 清理未使用的镜像
docker image prune -a
# 清理所有未使用的资源
docker system prune -a总结
本教程介绍了 Docker 的基础概念、安装方法和基本命令。通过实际案例,我们学习了如何部署 Web 应用、使用自定义内容以及设置资源限制。掌握这些基础知识后,可以继续学习 Docker 的镜像管理、容器管理等高级功能。