Docker入门到实践(一):从零开始掌握Docker简介与安装
一、Docker简介:重新定义应用部署方式
1.1 容器化技术的革命性突破
Docker作为容器化技术的代表,通过轻量级虚拟化和标准化打包,解决了传统开发中的三大痛点:
- 环境一致性:开发、测试、生产环境差异导致”在我机器上能运行”的问题
- 资源利用率:虚拟机占用大量系统资源,Docker容器共享内核,启动速度以秒计
- 部署效率:传统部署需配置服务器、安装依赖,Docker通过镜像实现”一键部署”
典型案例:某电商平台采用Docker后,将微服务部署时间从2小时缩短至5分钟,服务器资源利用率提升40%。
1.2 核心概念解析
- 镜像(Image):应用的只读模板,包含代码、运行时、系统工具等。例如:
nginx:latest镜像包含完整的Web服务器环境 - 容器(Container):镜像的运行实例,每个容器相互隔离但共享内核
- 仓库(Registry):镜像存储库,Docker Hub官方仓库已收录超过150万个镜像
- Dockerfile:文本文件,定义镜像构建步骤,示例:
FROM python:3.9-slimWORKDIR /appCOPY requirements.txt .RUN pip install -r requirements.txtCOPY . .CMD ["python", "app.py"]
1.3 技术优势对比
| 特性 | Docker容器 | 传统虚拟机 |
|---|---|---|
| 启动速度 | 秒级 | 分钟级 |
| 资源占用 | MB级别 | GB级别 |
| 隔离性 | 进程级隔离 | 硬件级隔离 |
| 镜像大小 | 通常<500MB | 通常>5GB |
| 跨平台性 | 依赖Linux内核 | 全虚拟化支持 |
二、Docker安装实践:三步完成环境搭建
2.1 系统要求验证
- Linux:推荐Ubuntu 20.04/CentOS 7+,内核版本≥3.10
- macOS:macOS 10.15+(需HyperKit支持)
- Windows:Win10/11专业版(需WSL2或Hyper-V)
验证命令:
# Linux内核版本检查uname -r# 内存检查(建议≥4GB)free -h
2.2 分步安装指南
Linux系统安装(Ubuntu示例)
# 卸载旧版本(如有)sudo apt-get remove docker docker-engine docker.io containerd runc# 安装依赖sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common# 添加Docker官方GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加稳定版仓库sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 安装Docker CEsudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io# 验证安装sudo docker run hello-world
Windows/macOS安装
- 访问Docker Desktop官网
- 下载对应版本安装包
- 双击安装,保持默认设置
- 安装完成后启动,终端执行:
docker --versiondocker run hello-world
2.3 安装后必要配置
用户组管理(避免每次使用sudo)
sudo groupadd dockersudo usermod -aG docker $USERnewgrp docker # 立即生效
镜像加速配置(国内用户必备)
编辑/etc/docker/daemon.json(Linux)或Docker Desktop设置(Win/Mac):
{"registry-mirrors": ["https://registry.docker-cn.com","https://mirror.baidubce.com"]}
重启服务:
sudo systemctl restart docker
三、验证环境与基础操作
3.1 第一个Docker容器
# 运行Nginx容器docker run --name my-nginx -p 8080:80 -d nginx# 验证访问curl http://localhost:8080# 或浏览器访问 http://localhost:8080# 查看运行中的容器docker ps
3.2 常用管理命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker images |
列出本地镜像 | |
docker rm |
删除容器 | docker rm my-nginx |
docker rmi |
删除镜像 | docker rmi nginx:latest |
docker exec |
进入运行中的容器 | docker exec -it my-nginx bash |
docker logs |
查看容器日志 | docker logs my-nginx |
3.3 典型问题解决方案
-
权限不足错误:
- 现象:
Got permission denied - 解决:执行
sudo chmod 666 /var/run/docker.sock或添加用户到docker组
- 现象:
-
端口冲突:
- 现象:
Bind for 0.0.0.0:8080 failed - 解决:更换宿主端口或停止占用进程
- 现象:
-
镜像下载慢:
- 现象:
Error response from daemon: Get https://registry-1.docker.io/v2/... - 解决:配置镜像加速器(见2.3节)
- 现象:
四、进阶建议与学习路径
-
实践项目推荐:
- 部署WordPress博客(需MySQL+WordPress两个容器)
- 构建Python Flask应用镜像
- 使用Docker Compose编排多容器应用
-
学习资源:
- 官方文档:Docker Docs
- 实战书籍:《Docker从入门到实践》
- 实验平台:Play with Docker(在线实验室)
-
安全建议:
- 定期更新Docker版本
- 避免使用root用户运行容器
- 限制容器资源(CPU/内存)
通过本文的安装与基础操作,读者已具备使用Docker进行应用容器化的基本能力。后续章节将深入讲解镜像构建、网络配置、数据卷管理等高级主题,帮助读者从入门走向精通。