一、前言:为什么新手必须学会 Docker?
很多转行初学程序员都会遇到经典开发问题:本地代码能跑,放到服务器就报错、换一台电脑就要重新配置环境、安装软件冲突、版本依赖混乱。
而 Docker 就是专门解决这类问题的工具,目前企业后端开发、服务器部署、微服务项目必备技术。本文专为零基础小白编写,无复杂底层原理、无晦涩专业术语,全程实操干货,看完可以独立完成项目打包、镜像制作、服务器部署。
二、Docker 核心基础认知(通俗讲解)
2.1 什么是 Docker?
用大白话解释:Docker 是一款容器化打包工具。
它可以把代码、运行环境、依赖插件、配置文件统一打包成一个独立文件,打包后的文件可以在任意安装了 Docker 的电脑、服务器上一键运行,不会出现环境冲突、版本不一致问题。
2.2 Docker 核心优势(新手必看)
环境一致:本地、测试、生产服务器环境完全相同,彻底解决“本地能跑线上报错”;
轻量化占用低:对比虚拟机,Docker 不需要安装完整操作系统,内存、硬盘占用极小,启动速度秒级完成;
一键部署:打包好的镜像,一条命令即可运行项目,无需复杂配置;
隔离性强:不同项目容器相互独立,安装软件、修改配置互不干扰;
迁移方便:镜像可复制、可上传仓库,换服务器直接拉取部署。
2.3 主流应用场景
个人项目、毕业设计快速部署上线;
企业后端项目、微服务集群部署;
开发环境搭建(MySQL、Redis、Nginx 一键安装);
软件版本管理、多版本共存;
测试环境快速搭建、销毁。
三、Docker 三大核心要素(镜像/容器/仓库)
新手最先混淆的三个概念,本文用通俗类比讲透,三者关系是 Docker 核心逻辑。
3.1 概念通俗解释
镜像(Image):模板、安装包。相当于手机APP安装包,静态文件,不可修改,包含项目代码、环境、依赖;
容器(Container):实例、运行中的程序。相当于打开运行后的手机APP,由镜像启动生成,可启停、删除;
仓库(Repository):存放镜像的云端仓库。相当于应用商店,官方公共仓库为 Docker Hub,可拉取别人做好的镜像,也可上传自己制作的镜像。
3.2 三者逻辑关系
仓库下载镜像 → 镜像启动生成容器 → 容器对外提供服务
补充关键常识:一个镜像可以启动无数个容器,容器删除不会影响原始镜像。
四、主流系统 Docker 安装教程(Windows/Linux/Mac)
4.1 Windows 系统安装(Win10/Win11)
4.1.1 安装前提
系统版本:Win10 专业版及以上、Win11;家庭版需手动开启虚拟机功能。
4.1.2 安装步骤
官网下载 Docker Desktop(Windows 可视化工具);
双击安装包,默认勾选全部组件,无脑下一步安装;
安装完成后重启电脑,启动 Docker Desktop;
打开终端(CMD/PowerShell),输入校验命令。
docker --version输出版本号即安装成功。
4.2 Linux 系统安装(CentOS7+/Ubuntu20.04+)
4.2.1 CentOS 安装命令
# 1. 更新yum依赖
yum update -y
# 2. 安装依赖工具
yum install -y yum-utils
# 3. 设置docker阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4. 安装docker核心组件
yum install -y docker-ce docker-ce-cli containerd.io
# 5. 启动docker并设置开机自启
systemctl start docker
systemctl enable docker
# 6. 校验版本
docker --version4.2.2 Ubuntu 安装命令
# 1. 更新软件源
apt update
# 2. 安装依赖
apt install -y ca-certificates curl
# 3. 添加docker官方密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# 4. 安装docker
apt install -y docker-ce docker-ce-cli containerd.io
# 5. 启动校验
systemctl start docker
docker --version4.3 Mac 系统安装
官网下载 Docker Desktop for Mac;
拖拽安装包至应用程序,打开后等待初始化;
终端输入
docker \-\-version校验。
4.4 必做配置:阿里云镜像加速(解决下载缓慢)
Docker 默认国外源下载速度极慢,新手必须配置国内镜像加速。
4.4.1 Windows/Mac 配置
打开 Docker Desktop,点击设置(Settings);
找到 Docker Engine,粘贴下方配置;
点击 Apply & Restart 重启生效。
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://aliyun.mirror.com"
]
}4.4.2 Linux 配置
# 创建配置文件
mkdir -p /etc/docker
# 写入镜像源
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
# 重启docker
systemctl daemon-reload
systemctl restart docker五、Docker 常用核心命令(逐条详解+实战示例)
所有命令区分大小写,本文按使用频率排序,标注释义、使用场景、实战示例,新手直接复制套用即可。
5.1 基础信息命令
# 1. 查看docker版本
docker --version
# 2. 查看docker详细信息
docker info
# 3. 帮助命令(忘记参数随时查)
docker 命令名 --help5.2 镜像操作命令(重点)
# 1. 查看本地所有镜像
docker images
# 释义:列出已下载镜像,包含镜像名、版本、大小、ID
# 2. 搜索云端镜像
docker search nginx
# 场景:查找官方开源镜像(MySQL、Redis、Nginx)
# 3. 下载镜像(拉取镜像)
docker pull nginx:latest
# 释义:latest代表最新版本,可指定版本如mysql:8.0
# 4. 删除本地镜像
docker rmi 镜像ID/镜像名
# 示例:docker rmi nginx:latest
# 5. 镜像打包备份
docker save -o 备份文件名.tar 镜像名
# 6. 镜像导入恢复
docker load -i 备份文件名.tar5.3 容器操作命令(高频常用)
# 1. 运行容器(最核心命令)
docker run [参数] 镜像名
# 常用参数详解:
# -d:后台静默运行
# --name:自定义容器名称
# -p 主机端口:容器端口:端口映射(外部访问必备)
# -v:文件挂载(数据持久化)
# -e:设置环境变量(数据库密码等)
# 实战示例:启动Nginx网页服务
docker run -d --name my-nginx -p 80:80 nginx:latest
# 2. 查看运行中的容器
docker ps
# 3. 查看全部容器(包含已停止)
docker ps -a
# 4. 启停重启容器
docker stop 容器名/容器ID # 停止
docker start 容器名/容器ID # 启动
docker restart 容器名/容器ID # 重启
# 5. 删除容器(必须停止后删除)
docker rm 容器ID
docker rm -f 容器ID # 强制删除运行中的容器
# 6. 进入容器内部(修改配置必备)
docker exec -it 容器ID bash
# 7. 查看容器运行日志
docker logs 容器ID
docker logs -f 容器ID # 实时滚动查看日志5.4 数据卷命令(数据持久化)
# 1. 查看所有数据卷
docker volume ls
# 2. 创建数据卷
docker volume create 卷名
# 3. 删除无用数据卷
docker volume prune六、Dockerfile 语法详解+完整实战案例
Dockerfile 是自定义镜像的脚本文件,新手想要打包自己的项目,必须掌握 Dockerfile,语法简单、固定格式,无需死记硬背。
6.1 Dockerfile 核心常用语法
6.2 实战案例:打包静态网页项目
6.2.1 项目结构
my-web/
├── index.html # 静态网页
└── Dockerfile # 镜像构建脚本6.2.2 编写 index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Docker入门实战项目</title>
</head>
<body>
<h1>恭喜你!Docker打包部署成功!</h1>
<p>零基础教程实战案例</p>
</body>
</html>6.2.3 编写 Dockerfile(无后缀,固定文件名)
# 1. 基础镜像:使用官方nginx
FROM nginx:latest
# 2. 作者信息
MAINTAINER 技术博主
# 3. 工作目录
WORKDIR /usr/share/nginx/html
# 4. 复制本地网页到容器
COPY index.html ./
# 5. 声明开放80端口
EXPOSE 80
# 6. 容器启动命令(nginx固定启动命令)
CMD ["nginx","-g","daemon off;"]6.2.4 构建镜像命令
# 格式:docker build -t 镜像名:版本 目录
docker build -t my-web:1.0 .
# 注意:末尾小数点不可省略,代表当前目录6.2.5 启动自定义镜像容器
docker run -d --name web-demo -p 8080:80 my-web:1.06.2.6 访问测试
浏览器输入:localhost:8080,看到网页内容即打包成功。
七、容器编排:Docker Compose 多容器部署
7.1 什么是 Compose?
单个项目通常需要多个服务(例如后端程序+MySQL+Redis),逐个启动容器繁琐且容易出错。Docker Compose 是多容器编排工具,通过一个yml配置文件,一键启动、停止所有服务。
7.2 Compose 核心语法
version:指定配置文件版本;
services:定义所有容器服务;
ports:端口映射;
volumes:数据挂载;
depends_on:服务启动依赖顺序。
7.3 实战案例:Nginx+MySQL 组合部署
7.3.1 编写 docker-compose.yml
version: '3.8'
services:
# Nginx网页服务
nginx:
image: nginx:latest
ports:
- "80:80"
restart: always
# MySQL数据库服务
mysql:
image: mysql:8.0
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test_db
volumes:
- mysql-data:/var/lib/mysql
restart: always
volumes:
mysql-data:7.3.2 常用编排命令
# 前台启动服务(查看日志)
docker-compose up
# 后台静默启动
docker-compose up -d
# 停止服务(保留数据)
docker-compose down
# 停止并删除所有数据卷
docker-compose down -v八、新手入门避坑指南+排错小技巧
8.1 高频避坑要点
端口冲突:同一主机端口只能被一个容器占用,报错先检查端口是否被占用,修改映射端口即可;
镜像下载失败:优先检查镜像加速源,国外镜像可切换阿里云加速;
容器启动立即退出:大部分是前台程序未运行,服务无任务会自动关闭,添加后台运行参数
\-d;数据丢失:容器删除数据同步清空,重要数据必须配置数据卷挂载;
权限不足:Linux 系统建议普通用户加入docker组,避免频繁使用sudo。
8.2 实用排错命令
# 1. 查看容器报错日志(排错首选)
docker logs 容器ID
# 2. 检查容器详细配置
docker inspect 容器ID
# 3. 清理无用镜像、容器、缓存
docker system prune -a
# 4. 强制终止卡死容器
docker kill 容器ID九、完整总结+学习路线
9.1 本文知识总结
本文从零讲解 Docker,涵盖核心概念、多系统安装、镜像容器仓库关系、常用命令、Dockerfile自定义镜像、Compose容器编排、项目实战、排错避坑,完整覆盖新手入门必备知识点,学完可独立完成个人项目打包、服务器部署。
9.2 新手进阶学习路线
熟练掌握基础命令,能够独立启停容器;
手写Dockerfile,打包Java/Node/Python各类项目;
精通Docker Compose编排多服务;
学习私有仓库搭建、镜像优化、网络配置;
进阶学习K8s容器编排,适配企业微服务架构。