保姆级Docker+Docker Compose全攻略:从入门到项目上线,初中级开发必备实战教程
保姆级Docker+Docker Compose全攻略:从入门到项目上线,初中级开发必备实战教程
哈喽各位开发朋友!相信大家都遇到过这些世纪难题:
- 本地代码跑的好好的,一到服务器就各种报错,一句「在我电脑上能跑啊」成了开发圈最大的梗;
- 新项目上线,服务器要装JDK、MySQL、Redis、Nginx,一套环境配下来大半天,换台服务器又要从头再来;
- 多服务项目部署,服务之间依赖、端口、版本冲突,调了一天还是启动失败;
- 网上找的Docker教程,只会让你复制粘贴命令,根本不讲为什么这么写,出了问题完全不知道怎么解决。
这篇教程就彻底解决这些痛点,从Docker核心原理、基础命令,到项目打包上线、多服务编排,全程带实战案例和避坑指南。不用背命令,不用啃晦涩的官方文档,新手也能跟着教程一步步完成项目部署,真正搞懂Docker,把它变成你工作中的提效神器。
本文定位:初中级开发入门到实战,全程无废话,所有命令和案例都经过实测,复制就能用,看完就能独立完成项目Docker化部署。
一、先搞懂核心:Docker到底是什么?为什么一定要学它?
很多新手上来就背命令,却连Docker解决什么问题都不知道,这是最大的误区。我们先用大白话讲透Docker的本质,再动手实操。
1. Docker的核心本质
Docker是一个开源的容器化引擎,你可以把它理解成一个「软件打包神器+轻量级虚拟机」。
它能把你的代码、运行环境、依赖库、配置文件,全部打包到一个叫做「镜像」的标准化盒子里。这个盒子在任何安装了Docker的机器上,都能一键运行,完全不用考虑底层系统和环境差异,真正实现「一次打包,到处运行」。
2. Docker解决了开发中的3大核心痛点
| 传统开发部署的痛点 | Docker的解决方案 |
|---|---|
| 环境不一致:本地、测试、生产环境差异大,频繁出现「我电脑上能跑」的问题 | 把代码和环境一起打包,所有环境用同一个镜像,运行结果100%一致 |
| 部署效率低:新项目上线要装一堆依赖,配置复杂,换服务器就要重复操作 | 镜像一键启动,不用装任何依赖,10秒完成部署,换机器直接复用镜像 |
| 资源隔离差:一台服务器跑多个项目,端口、版本、依赖互相冲突 | 每个容器都是独立的运行环境,项目之间完全隔离,不会互相影响 |
3. 新手必懂的4个核心概念
这4个概念是Docker的灵魂,搞懂了它们,你就理解了Docker80%的逻辑,后面的命令根本不用死记硬背。
① 镜像(Image)
镜像就是我们打包好的「软件安装包」,里面包含了程序运行需要的代码、环境、依赖、配置。它是只读的,就像Windows的系统镜像文件,你不能直接修改它,只能通过它创建容器。
- 举个例子:我们从官方仓库拉取的
mysql:8.0、openjdk:17、nginx:latest,都是官方做好的镜像。 - 我们自己写的SpringBoot/Vue项目,也可以通过Dockerfile打包成自定义镜像。
② 容器(Container)
容器是镜像运行后的实例,就像我们用系统镜像装好了一台电脑。
一个镜像可以创建无数个容器,每个容器都是独立的、可读写的运行环境,有自己的文件系统、网络、进程空间。我们的程序最终就是跑在容器里的。
- 镜像和容器的关系:就像Java中的「类」和「对象」,镜像是类,容器是类的实例。
③ 仓库(Repository)
仓库就是存放Docker镜像的地方,相当于代码的GitHub。
- 公共仓库:Docker Hub(官方仓库)、阿里云镜像仓库、网易云镜像仓库,里面有海量官方做好的镜像,我们可以直接拉取使用。
- 私有仓库:公司内部搭建的镜像仓库,存放自己项目的自定义镜像。
④ Dockerfile
Dockerfile是一个文本文件,里面写了一系列指令,告诉Docker怎么构建我们的自定义镜像。
比如「基于哪个基础镜像、复制代码、执行打包命令、暴露端口、启动程序」,我们只需要写好Dockerfile,就能一键把项目打包成镜像。
4. Docker和虚拟机的区别
很多新手会问:Docker和VMware虚拟机有啥不一样?为什么Docker更火?
用一张表讲清楚核心差异,你就明白了:
| 特性 | Docker容器 | 传统虚拟机 |
|---|---|---|
| 资源占用 | 极小,MB级别,共享主机内核 | 极大,GB级别,完整操作系统 |
| 启动速度 | 秒级,1-3秒就能启动 | 分钟级,开机要几十秒 |
| 隔离性 | 进程级隔离,安全隔离 | 完全隔离,系统级隔离 |
| 可移植性 | 跨平台,一次打包到处运行 | 移植性差,适配不同系统麻烦 |
| 资源利用率 | 一台主机能跑几百个容器 | 一台主机最多跑十几个虚拟机 |
这就是为什么现在所有互联网公司,都在用Docker做项目部署和环境管理,它是初中级开发必须掌握的核心技能,面试中更是高频考点。
二、前置准备:Docker环境安装(全平台覆盖+避坑指南)
我们分3个主流平台讲解安装,全程带国内镜像源配置,解决新手最头疼的「下载慢、安装失败」问题。
常用编辑快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
插入代码块:Ctrl/Command + Shift + K
1. Linux服务器安装(生产环境主流:CentOS 7+/Ubuntu 22.04)
企业生产环境90%都是Linux系统,这是我们重点要掌握的。
① CentOS/RHEL系统安装步骤
- 卸载系统旧版本(如果有)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 配置国内阿里云镜像源(关键!解决下载慢的问题)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装Docker引擎
# 安装最新稳定版
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 启动Docker并设置开机自启
# 启动Docker服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
- 验证安装是否成功
# 查看Docker版本
docker -v
# 运行hello-world测试镜像
sudo docker run hello-world
如果能正常输出版本号,且hello-world镜像运行成功,说明安装完成。
② Ubuntu/Debian系统安装步骤
- 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
- 更新软件包,安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
- 配置阿里云镜像源
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
- 安装Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
- 验证安装
docker -v
sudo docker run hello-world
③ Linux安装必做配置:镜像加速器
Docker默认从官方Docker Hub拉取镜像,国内访问速度极慢,必须配置国内镜像加速器,否则拉取镜像会超时失败。
- 修改daemon.json配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn/",
"https://hub-mirror.c.163.com/",
"https://mirror.baidubce.com/"
]
}
EOF
- 重启Docker服务,让配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
- 验证配置是否生效

390

被折叠的 条评论
为什么被折叠?



