Docker+Docker Compose全攻略

保姆级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.0openjdk:17nginx: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系统安装步骤
  1. 卸载系统旧版本(如果有)
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 配置国内阿里云镜像源(关键!解决下载慢的问题)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装Docker引擎
# 安装最新稳定版
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动Docker并设置开机自启
# 启动Docker服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
  1. 验证安装是否成功
# 查看Docker版本
docker -v
# 运行hello-world测试镜像
sudo docker run hello-world

如果能正常输出版本号,且hello-world镜像运行成功,说明安装完成。

② Ubuntu/Debian系统安装步骤
  1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
  1. 更新软件包,安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
  1. 配置阿里云镜像源
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"
  1. 安装Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
  1. 验证安装
docker -v
sudo docker run hello-world
③ Linux安装必做配置:镜像加速器

Docker默认从官方Docker Hub拉取镜像,国内访问速度极慢,必须配置国内镜像加速器,否则拉取镜像会超时失败。

  1. 修改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
  1. 重启Docker服务,让配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 验证配置是否生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值