Docker完整教程 - 从入门到SpringBoot实战
目录
1. Docker基础概念
2. Docker安装
3. Docker核心概念详解
4. Docker常用命令大全
5. Dockerfile详解
6. SpringBoot项目Docker化实战
7. 实践案例
8. 常见问题与解决方案
总结
1. Docker基础概念
什么是Docker?
Docker是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。
简单理解:想象Docker就像一个超级轻便的"虚拟机",但比虚拟机更快、更省资源。
Docker的优势
- 轻量级:容器共享主机内核,比虚拟机占用更少资源
- 可移植性:一次构建,到处运行
- 快速部署:秒级启动,快速扩缩容
- 环境一致性:开发、测试、生产环境完全一致
Docker vs 虚拟机
特性 | Docker容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
资源占用 | 低 | 高 |
性能 | 接近原生 | 有损耗 |
隔离性 | 进程级 | 操作系统级 |
2. Docker安装
Windows安装
- 下载Docker Desktop for Windows
- 双击安装包,按提示安装
- 重启电脑
- 打开PowerShell,运行:
docker --version
macOS安装
- 下载Docker Desktop for Mac
- 拖拽到Applications文件夹
- 启动Docker Desktop
- 打开终端,运行:
docker --version
Linux安装(以Ubuntu为例)
# 更新软件包
sudo apt update# 安装依赖
sudo apt install apt-transport-https ca-certificates curl software-properties-common# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加Docker仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 安装Docker CE
sudo apt update
sudo apt install docker-ce# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker# 验证安装
docker --version
3. Docker核心概念详解
3.1 镜像(Image)
定义:镜像是一个只读的模板,用来创建Docker容器。
比喻:镜像就像是"程序安装包"或"模板",包含了运行应用所需的所有内容。
特点:
- 只读的
- 分层存储
- 可以基于其他镜像构建
3.2 容器(Container)
定义:容器是镜像的运行实例。
比喻:如果镜像是"安装包",那么容器就是"运行中的程序"。
特点:
- 可读写
- 隔离的运行环境
- 可以启动、停止、删除
3.3 仓库(Repository)
定义:仓库是集中存放镜像的地方。
比喻:仓库就像"应用商店",你可以从中下载各种镜像。
主要仓库:
- Docker Hub(官方)
- 阿里云容器镜像服务
- 腾讯云容器镜像服务
4. Docker常用命令大全
4.1 镜像相关命令
搜索镜像
# 搜索镜像
docker search nginx
docker search mysql
拉取镜像
# 拉取最新版本
docker pull nginx# 拉取指定版本
docker pull nginx:1.20# 从指定仓库拉取
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx:1.20
查看镜像
# 列出所有镜像
docker images# 查看镜像详细信息
docker inspect nginx:latest# 查看镜像历史
docker history nginx:latest
删除镜像
# 删除单个镜像
docker rmi nginx:latest# 删除多个镜像
docker rmi nginx:1.20 mysql:8.0# 强制删除
docker rmi -f nginx:latest# 删除所有未使用的镜像
docker image prune
4.2 容器相关命令
运行容器
# 基本运行
docker run nginx# 后台运行
docker run -d nginx# 端口映射
docker run -d -p 8080:80 nginx# 挂载数据卷
docker run -d -p 8080:80 -v /host/path:/container/path nginx# 环境变量
docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0# 容器名称
docker run -d --name my-nginx -p 8080:80 nginx# 交互式运行
docker run -it ubuntu:20.04 /bin/bash