一、初识容器
场景问题:为什么用容器?
在传统运维环境中,我们常常面临以下痛点:
-
应用部署环境不一致导致“环境烟雾”问题
-
依赖冲突或版本不匹配带来重装、排查成本
-
虚拟机启动慢、资源利用率低
通过容器技术,开发、测试、生产环境可以使用同一镜像打包!保证“一次构建,到处运行”。同时,容器启动快、资源开销小,让云原生时代成为可能。
对比物理机、虚拟机、容器
类型 | 启动时间 | 资源开销 | 隔离方式 |
---|---|---|---|
物理机 | 数分钟~数小时 | 独占硬件 | 无 |
虚拟机 | 数十秒~数分钟 | 全虚拟化,内存+磁盘占用大 | 完全面向硬件模拟 |
容器 | 毫秒~数秒 | 进程级隔离,内核共享 | 操作系统层面命名空间隔离 |
一句话定义 Docker:轻量化的应用打包工具。
二、3 步上手 Docker
Step 1 安装
以 Ubuntu 为例:
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
安装完成后,执行 docker version
可看到客户端和服务端版本信息。
Step 2 运行“Hello World”容器
docker run hello-world
Docker 会拉取官方 hello-world
镜像并运行。屏幕输出欢迎信息,说明安装无误。
Step 3 部署 Web 应用
以 Nginx 为例:
docker run -d -p 80:80 --name my-nginx nginx
# 验证
curl http://localhost
此时浏览器或命令行会显示 Nginx 默认欢迎页面,完成你的第一个容器化 Web 应用部署。
三、理解核心概念
Docker 架构图解
-
Client:命令行或 API 客户端。
-
Daemon (dockerd):后台服务,负责管理镜像、容器等。
-
Images:只读模板,用于创建容器。
-
Containers:镜像的运行实例,包含应用进程及其依赖。
Client ↔ Daemon ←→ Images + Containers
常用命令速查表
命令 | 说明 |
docker ps -a | 查看所有容器 |
docker images | 查看本地镜像 |
docker exec -it <container> bash | 进入容器内部 |
docker logs <container> | 查看容器日志 |
docker stop <container> | 停止指定容器 |
docker rm <container> | 删除已停止容器 |
四、避坑指南
-
权限问题:首次使用可能遇到
permission denied while trying to connect to the Docker daemon
。sudo usermod -aG docker $USER newgrp docker
-
磁盘空间清理:频繁拉取与构建镜像会占用大量空间。
docker system prune -a
3. **容器删除**:一键清理所有容器。
```bash
docker rm -f $(docker ps -aq)