深浅模式
Docker 概述
在后端开发中,环境配置经常让人头疼。不同机器、不同系统,装依赖、配环境,常常一不小心就“能跑的项目跑不起来”。Docker 的出现,就是为了解决这个问题。
Docker 可以理解为一个“轻量级的虚拟机”,但它比传统虚拟机更快、更省资源。它把应用和运行环境都打包在一个“容器”里,保证无论在哪台机器上,运行效果都一样。
为什么要用 Docker?
- 环境一致:开发、测试、生产环境完全一致,避免“在我电脑上没问题”的尴尬。
- 快速交付:一条命令就能启动或关闭服务,部署上线更高效。
- 易于扩展:需要更多服务时,直接复制容器即可,适合微服务和分布式场景。
- 资源占用低:相比传统虚拟机,Docker 启动快、占用少。
入门 Docker,最常用的就是三步:
拉取镜像
镜像就像“应用模板”。比如要用 MySQL,只需拉取官方镜像:bashdocker pull mysql:8.0
这条命令会下载 MySQL 8.0 的镜像。
运行容器
有了镜像,就可以启动一个“容器”(即运行中的应用):bashdocker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0
这会在后台启动一个 MySQL 服务,端口映射到本地 3306。
管理容器
查看正在运行的容器:
bash
docker ps
停止容器:
bash
docker stop my-mysql
Docker 让开发环境变得简单、统一,是现代后端开发的必备工具。入门阶段,建议多用官方镜像,先学会基本命令和常见用法,后续再深入了解镜像构建、容器编排等进阶内容。
容器与虚拟机比较
很多人刚接触 Docker 时,都会把“容器”和“虚拟机”混为一谈。其实,两者虽然都能实现“隔离运行环境”,但原理和使用体验差别很大。
虚拟机
虚拟机会在物理服务器上模拟出一整套硬件,然后再在虚拟硬件上安装操作系统。每个虚拟机都像一台“完整的电脑”,资源占用大,启动慢。
容器
容器则是直接利用宿主机的操作系统内核,不需要额外的操作系统。它们之间彼此隔离,但共享同一个内核,所以启动非常快,占用资源也很少。
举个例子:
- 启动一个虚拟机,可能要几分钟,还要分配几 G 内存和硬盘。
- 启动一个容器,几秒钟就能搞定,几十 M 内存就够用。
容器更轻量、更高效,非常适合微服务、弹性扩容等现代开发场景。而虚拟机更适合需要高度隔离、不同操作系统的场合。
Docker 基本概念
刚接触 Docker,最容易混淆的就是各种名词。其实只要抓住几个核心点,就能理清楚它们的关系:
宿主机(Host)
就是你安装了 Docker 的那台服务器。无论是本地电脑还是云服务器,只要能装 Docker,就是宿主机。
镜像(Image)
镜像可以理解为“应用的模板”或者“快照”。比如你要用 MySQL,就拉一个 MySQL 镜像。镜像里包含了应用运行所需的所有环境和依赖。
为什么要有镜像?—— 保证环境一致,随时可以复制、分发。
容器(Container)
容器就是镜像“跑起来”之后的实例。镜像像“类”,容器像“对象”。你可以用同一个镜像启动很多个容器,每个容器互不影响。
为什么要有容器?—— 让应用真正运行起来,并且彼此隔离。
仓库(Repository)
仓库是用来存放镜像的地方。最常用的是 Docker Hub(官方仓库),也可以搭建自己的私有仓库。
为什么要有仓库?—— 方便团队协作和镜像分发。
docker 安装
Docker 安装其实很简单,下面以 Linux(CentOS/RedHat 系)为例,快速过一遍常用流程:
1. 安装 Docker
直接用包管理器安装即可:
bash
yum install docker
2. 查看 Docker 版本
安装好后,检查一下版本,确认 Docker 已经装好:
bash
docker -v
3. 配置镜像加速
国内拉取镜像速度慢,建议配置镜像加速。常用做法是编辑配置文件:
bash
vim /etc/docker/daemon.json
在文件中添加如下内容(以阿里云为例):
json
{
"registry-mirrors": ["https://z7sw3355.mirror.aliyuncs.com"]
}
阿里云镜像加速需要注册账号,每个人都能免费获得一个专属加速地址,速度很快。如果阿里云不稳定,也可以用其他镜像源,比如:
json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.chenby.cn",
"http://mirrors.ustc.edu.cn"
// ... 其他可选加速源
]
}
4. 应用配置并重启 Docker
配置好镜像加速后,记得刷新配置并重启服务:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
镜像加速配置常见问题
我在配置镜像加速时会遇到各种“玄学”问题,比如配置不上、加速器无效等。常见原因有:
- JSON 格式写错:只要有一个逗号、引号、括号错了,Docker 就无法识别。建议用在线 JSON 校验工具检查格式。
- 配置文件路径不对:一般是
/etc/docker/daemon.json
,没有的话可以自己新建。 - 配置后没重启 Docker:修改完一定要执行
sudo systemctl daemon-reload
和sudo systemctl restart docker
,否则新配置不会生效。 - 网络环境问题:有些云服务器或公司网络会屏蔽部分镜像源,导致加速器失效。
- 加速器地址失效或被墙:有些镜像源可能临时不可用,建议多试几个不同的加速地址。
如果本地怎么都搞不定,其实不用死磕,可以直接用云厂商(比如腾讯云、阿里云)自带的 Docker 镜像环境,省心省力。我自己就遇到过配置不上的情况,最后直接在腾讯云上用带 Docker 的 CentOS 镜像,一下子就好了。
评论