第一章:Docker基础入门
大家好,我是你们这门课的老师。在正式开始之前,我想先聊聊我自己的经历。几年前我第一次接触Docker时,心里其实挺抵触的——「又来个新东西?学不完啊!」但真正用起来之后,我发现这玩意儿确实能解决很多实际问题。今天我们就从零开始,把Docker的底裤扒干净。
1.1 Docker是什么?
说白了,Docker就是一个「集装箱」管理系统。你想想看,以前我们部署应用,要配环境、装依赖、调参数,折腾半天还可能因为服务器版本不同而翻车。Docker把应用和它需要的所有东西打包成一个标准单元,扔到哪都能跑。
我个人习惯把Docker理解成「轻量级的虚拟机」,但又不完全是。它共享宿主机的操作系统内核,所以启动快、资源占用少。我在项目中遇到过最典型的场景:开发环境跑得好好的,一上测试服务器就报错。用Docker之后,这种问题基本绝迹了。
核心要点:Docker让「在我机器上能跑」变成「在任何机器上都能跑」。
1.2 Docker与传统虚拟化对比
这里我画个表格,大家一看就明白:
| 对比项 | 传统虚拟机 | Docker容器 |
|---|---|---|
| 启动速度 | 分钟级 | 秒级 |
| 磁盘占用 | GB级别 | MB级别 |
| 性能损耗 | 较高(硬件虚拟化) | 几乎无(直接使用宿主机内核) |
| 隔离性 | 完全隔离 | 进程级隔离 |
| 资源利用率 | 低 | 高 |
为什么会这样?虚拟机每个都带一个完整的操作系统,而Docker容器共享宿主机内核。嗯,这里要注意:Docker的隔离性不如虚拟机那么彻底,但对我们日常的微服务部署来说,完全够用了。
避坑指南:我曾经在生产环境吃过亏——把Docker当虚拟机用,给每个容器分配固定内存。结果容器多了,宿主机内存爆了。记住:Docker是进程级隔离,不是硬件级隔离。
1.3 Docker核心概念
镜像(Image)
镜像就是容器的「模板」。你可以把它理解成Java里的类,容器就是实例。镜像是只读的,一旦构建好就不会变。我习惯把镜像比作「光盘」,容器就是「光驱里正在读的那张盘」。
举个例子,拉取一个Nginx镜像:
docker pull nginx:latest
这条命令会从Docker Hub下载最新版的Nginx镜像。Docker Hub就像GitHub,是存放镜像的仓库。
容器(Container)
容器是镜像的运行实例。你可以启动、停止、删除容器。每个容器都是隔离的,有自己的文件系统、网络、进程空间。
启动一个Nginx容器:
docker run -d -p 8080:80 nginx
这条命令把容器的80端口映射到宿主机的8080端口。现在访问 http://localhost:8080 就能看到Nginx欢迎页了。
小技巧:我个人习惯用 docker ps -a 查看所有容器(包括已停止的)。有时候容器启动失败,用这个命令能看到退出码,方便排查问题。
仓库(Registry)
仓库就是存放镜像的地方。Docker Hub是官方的公共仓库,但企业一般用私有仓库,比如Harbor或阿里云镜像仓库。
推送镜像到仓库:
docker push myapp:v1.0
拉取私有仓库的镜像:
docker pull registry.example.com/myapp:v1.0
1.4 安装Docker引擎
安装Docker其实很简单,但不同系统略有差异。我以Ubuntu 20.04为例,这是我最常用的生产环境。
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 - - 添加仓库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - 安装Docker:
sudo apt install docker-ce - 验证安装:
sudo docker run hello-world
看到「Hello from Docker!」就说明安装成功了。
注意:我曾经在CentOS上安装时忘了关闭SELinux,结果容器一直启动失败。如果你用CentOS/RHEL,记得先检查SELinux状态:getenforce。如果是Enforcing,建议改成Permissive或者配置SELinux策略。
Mac/Windows安装
Mac和Windows用户直接下载Docker Desktop就行。安装完成后,任务栏会出现小鲸鱼图标。点击它就能管理容器了。
验证安装:
docker --version
docker-compose --version
嗯,这里要注意:Windows用户如果用的是WSL2,Docker Desktop会自动配置好。我个人建议用WSL2,性能比Hyper-V好很多。
小结
这一章我们搞清楚了Docker是什么、和虚拟机的区别、三个核心概念(镜像、容器、仓库),以及怎么安装。说白了,Docker就是帮你把应用「打包带走」的工具。下一章我们会真正动手构建第一个镜像,到时候你会感受到它的威力。
对了,安装过程中如果遇到问题,别急着百度。先看看Docker的官方文档,写得挺清楚的。我当年就是靠啃官方文档入门的,虽然慢点,但基础打得牢。