第一章: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安装步骤

  1. 更新包索引:sudo apt update
  2. 安装依赖:sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. 添加Docker官方GPG密钥:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. 添加仓库:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  5. 安装Docker:sudo apt install docker-ce
  6. 验证安装: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的官方文档,写得挺清楚的。我当年就是靠啃官方文档入门的,虽然慢点,但基础打得牢。