这份指南专为完全 0 基础、想往阿里云运维方向发展的用户设计,全程无跳跃、无晦涩术语,每一步都有「操作目的 + 可复制命令 + 成功验证标准」,跟着走就能 100% 跑通,每天 1-2 小时,2 周就能掌握 Docker 核心运维技能。

先给 0 基础吃定心丸:Docker 没有你想的那么难,它的核心价值就是把应用和它需要的所有环境打包成一个 “集装箱”,一次打包,到处运行,彻底解决 “我电脑上能跑,服务器上跑不了” 的运维头号难题,是阿里云运维、云原生岗位的入门必备技能。

学前必看:0 基础学习核心原则

  1. 先跑通,再深究原理:不要一开始死记硬背命令和底层概念,先跟着步骤把操作做成功,有正反馈,再回头理解为什么这么做。
  2. 小步快跑,每步必验证:每执行完一个操作,就做一次验证,确认成功再往下走,避免攒了一堆操作最后报错,找不到哪里出了问题。
  3. 拒绝死记硬背:命令不用背,知道它是干嘛的、用的时候能查到就行,运维工作本来就是边查边做,重点是知道用什么命令解决什么问题。
  4. 全程贴合阿里云场景:所有操作都基于阿里云 ECS 服务器,学完就能直接用到阿里云运维工作中,不是无用的理论。

前置准备:0 基础也能搞定的阿里云环境搭建(1 天搞定)

这是最容易卡壳的一步,我会把所有细节讲透,哪怕你从来没碰过服务器,也能跟着完成。

一、买一台适合学习的阿里云 ECS 服务器

1. 配置选择(学习够用,成本极低)

配置项 推荐选择 原因
实例规格 突发性能实例 t6/t8 1 核 2G 学习完全够用,包年包月每月仅 30-50 元,按量付费每小时几分钱
操作系统 Alibaba Cloud Linux 3 阿里云原生系统,对 Docker 深度优化,兼容 CentOS 命令,免费、稳定、安全,0 基础首选
地域 离你最近的城市(如杭州 / 上海 / 北京) 访问速度快
网络 必须分配公网 IP 不然你无法远程连接服务器
计费方式 新手优先选「包年包月」 不用随时关停,省心,成本可控
2. 购买极简步骤
  1. 支付宝 / 淘宝账号登录阿里云官网,搜索「云服务器 ECS」,点击「立即购买」
  2. 选择「快速购买」(不用管复杂的自定义配置),按上面的表格选好配置
  3. 设置登录凭证:选择「密码」,设置一个好记的 root 管理员密码(一定要记好!后面登录要用)
  4. 核对费用,完成支付,等待 1-3 分钟,实例就会创建完成。

二、配置安全组(必做!不然后面访问不了)

安全组就是阿里云的虚拟防火墙,默认只开放了 22 端口,我们需要提前开放后续要用的端口:

  1. 阿里云控制台进入「ECS 实例详情页」,找到「安全组」,点击进入安全组配置页
  2. 点击「入方向规则」→「添加规则」,按下面的表格添加 3 条规则:
端口范围 授权对象 用途
22/22 0.0.0.0/0 远程连接服务器用
80/80 0.0.0.0/0 网站 / 网页访问用
443/443 0.0.0.0/0 HTTPS 访问用
  1. 点击确定,配置就生效了。

三、远程连接服务器(0 基础首选,不用装任何软件)

阿里云自带的Workbench 远程连接,浏览器直接用,不用下载 Xshell 等工具,0 门槛:

  1. 回到 ECS 实例详情页,点击右上角的「远程连接」
  2. 选择「Workbench 远程连接」,点击「立即登录」
  3. 弹出的窗口中,用户名填root,密码填你买服务器时设置的 root 密码,点击确定
  4. 看到黑色的命令行窗口,出现[root@iZxxxxxx ~]#这样的提示,就说明登录成功了!

补充:如果登录失败,先检查密码有没有输错,再检查安全组有没有开放 22 端口。

四、0 基础必学的 5 个 Linux 命令(后面所有操作的基础)

不用学复杂的 Linux 命令,先把这 5 个搞懂,足够你完成 Docker 全流程学习:

  1. cd 目录名:进入某个文件夹(比如cd /home就是进入 home 文件夹)
  2. ls:查看当前文件夹里的所有文件 / 文件夹
  3. mkdir 文件夹名:创建一个新文件夹(比如mkdir docker-test就是创建一个叫 docker-test 的文件夹)
  4. vi 文件名:创建 / 编辑一个文件(核心操作必记):
    • 输入vi 文件名回车后,按键盘i键,进入编辑模式,就能输入内容了
    • 编辑完成后,先按Esc键,退出编辑模式
    • 再输入:wq,按回车,就能保存文件并退出;如果输错了不想保存,输入:q!回车,强制不保存退出
  5. sudo 命令:用管理员权限执行命令,大部分 Docker 命令前面加 sudo,能避免权限报错。

阶段 1:Docker 安装与环境验证(1 天搞定,入门第一步)

学习目标

在阿里云 ECS 上完成 Docker 的标准化安装,配置阿里云专属加速,跑通第一个 Docker 容器,确认环境 100% 可用。

详细操作步骤(所有命令直接复制到命令行回车执行即可)

环境初始化(远程连接 ECS 后执行)

# 1. 更新系统软件包(Alibaba Cloud Linux/CentOS)
sudo yum update -y
# Ubuntu系统用 sudo apt update && sudo apt upgrade -y

# 2. 关闭防火墙(新手临时关闭,避免端口拦截,生产环境按需配置)
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 3. 关闭SELinux(避免Docker权限拦截)
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
1. 系统初始化(先把服务器环境准备好)
# 1. 更新系统软件包,把系统里的软件都更新到最新稳定版
sudo yum update -y

# 2. 安装Docker需要的依赖工具,不装会导致安装失败
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3. 环境初始化(远程连接 ECS 后执行)

2. 配置阿里云 Docker 专属 YUM 源(解决下载慢的问题)

阿里云 ECS 内网源,速度拉满,无公网流量消耗,比官方源快 10 倍以上:

sudo yum-config-manager --add-repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
3. 一键安装 Docker

安装 Docker 引擎、命令行工具、容器运行时、Compose 编排插件(一站式装完,不用单独装其他东西):

sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 启动 Docker 并设置开机自启(运维必做)

# 启动Docker服务
sudo systemctl start docker

# 设置开机自启:服务器重启后,Docker会自动启动,不用手动操作
sudo systemctl enable docker

# 查看Docker运行状态,输出里有 active (running) 就说明启动成功了
sudo systemctl status docker

q键可以退出状态查看页面。

5. 配置阿里云镜像加速器(必做!解决镜像拉取慢 / 超时)

Docker 默认从国外的 Docker Hub 拉取镜像,国内访问很慢,甚至会超时,阿里云给每个用户都提供了免费的专属加速器,必须配置。

步骤 1:获取你的专属加速器地址
  1. 阿里云控制台搜索「容器镜像服务 ACR」,点击进入(第一次进入会提示开通,选「个人版」,免费开通即可)
  2. 左侧导航栏找到「镜像工具」→「镜像加速器」
  3. 就能看到你的专属加速器地址,格式是https://xxxx.mirror.aliyuncs.com,复制下来。
步骤 2:配置加速器并生效
# 1. 创建Docker配置文件夹
sudo mkdir -p /etc/docker

# 2. 写入加速器配置(把下面的地址替换成你复制的专属加速器地址!)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://你的专属地址.mirror.aliyuncs.com"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF

# 3. 重载配置,重启Docker让配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
步骤 3:验证加速器是否生效

执行下面的命令,在输出的内容里找到「Registry Mirrors」,如果里面有你配置的加速器地址,就说明生效了:

docker info
6. 权限优化(免 sudo 执行 docker 命令)

默认情况下,每次执行 docker 命令都要加 sudo,很麻烦,执行下面的命令,把当前用户加入 docker 组,就能免 sudo 执行了:

#这两条命令是 Docker 安装后配置 “普通用户免 sudo 执行 docker 命令” 的标准黄金组合,需按顺序执行,作用互补。

#核心作用:永久将当前用户追加(添加)到 docker 用户组,是免 sudo 操作的前提配置。
sudo usermod -aG docker $USER

#核心作用:无需退出 / 重新登录当前终端,临时刷新并让 docker 组权限立即生效。
newgrp docker

第一条命令:sudo usermod -aG docker $USER

核心作用永久将当前用户追加(添加)到 docker 用户组,是免 sudo 操作的前提配置。

逐参数拆解:
参数 / 部分 含义说明
sudo 以 root 管理员权限执行后续命令(修改用户组属性需要管理员权限)。
usermod Linux 系统中用于修改用户账户属性的专用命令(User Modify)。
-a 关键参数:表示 “追加(Append)” 模式。⚠️ 必须加 -a,否则会覆盖用户的所有附加组,仅保留 docker 组,导致权限异常。
-G 指定要修改的是用户的附加组(Secondary Groups),而非主组。
docker 目标用户组名(Docker 安装时会自动创建名为 docker 的用户组)。
$USER Shell 环境变量,自动替换为当前登录的用户名(避免手动输入用户名)。
执行后的效果:
  • 系统会修改 /etc/group 文件,将你的用户名写入 docker 组的成员列表中(永久生效)。
  • ⚠️ 重要限制:Linux 用户组的变更默认仅对 “新登录的终端会话” 生效,当前正在使用的终端窗口不会立即获得 docker 组权限。

第二条命令:newgrp docker

核心作用无需退出 / 重新登录当前终端,临时刷新并让 docker 组权限立即生效

工作原理:
  • 它会启动一个新的子 Shell(Sub-Shell),在这个新 Shell 中,将你的 “有效主组” 临时切换为 docker 组。
  • 执行后,你当前的终端窗口会直接继承 docker 组的权限,无需断开 SSH 或重启系统。
注意事项:
  • 这是一个临时状态:在该子 Shell 中执行 exit 命令,会回到原本的 Shell 状态,临时权限也会消失(但永久加组的配置依然保留)。
  • 前置条件:必须先执行过上面的 usermod 命令,否则执行 newgrp docker 会报错(提示你不在该组中)。

两条命令的完整配合流程

  1. 第一步(永久配置):执行 sudo usermod -aG docker $USER,把你加入 docker 组(写入系统配置文件)。
  2. 第二步(即时生效):执行 newgrp docker,让当前终端窗口立即获得权限。
  3. 验证:执行 docker ps,如果不再提示 “permission denied”,说明配置成功。

补充:如果不想用 newgrp 的替代方案

执行完 usermod 后,也可以选择完全退出当前终端(或断开 SSH 重连),重新登录后权限也会自动生效,效果等同于 newgrp,只是稍微麻烦一点。

7. 最终验证:跑通你的第一个 Docker 容器

执行下面的命令,Docker 会拉取 hello-world 测试镜像,启动容器,打印欢迎信息:

docker run hello-world

只要输出里出现「Hello from Docker!」这句话,就说明你的 Docker 环境完全安装成功了! 恭喜你,已经完成了 Docker 入门的第一步。

阶段 2:吃透 Docker 三大核心概念 + 高频运维命令(2-3 天,核心中的核心)

第一步:先搞懂 3 个核心概念(大白话版,0 基础也能秒懂)

这 3 个概念搞懂,Docker 你就理解了 80%,不用死记硬背,记住类比就行:

Docker 概念 大白话类比 核心特点
镜像(Image) 手机 APP 的「安装包」 只读的模板文件,里面打包了应用运行需要的所有东西(代码、环境、配置),一个镜像可以创建无数个容器
容器(Container) 安装后「正在运行的 APP」 镜像的运行实例,是真正跑起来的程序,每个容器都是独立隔离的,互不干扰,容器删除后,里面的临时数据会丢失
仓库(Repository) 手机的「应用商店」 专门存放镜像的地方,分为公有仓库(Docker Hub、阿里云 ACR)和私有仓库,你可以从仓库拉取镜像,也可以把自己做的镜像推送到仓库

一句话总结关系:你从仓库里拉取一个镜像(安装包),用这个镜像启动一个容器(运行的 APP),完成应用部署。

第二步:镜像高频命令(运维日常必用)

所有命令都有示例,复制就能执行,每执行一个,就用验证命令看效果,加深记忆。

# 1. 搜索镜像(从Docker Hub找你需要的应用镜像,比如找nginx的镜像)
docker search nginx

# 2. 拉取镜像(下载安装包,:后面是版本号,不写默认是latest最新版)
docker pull nginx:alpine  # 拉取轻量版nginx镜像,新手优先用alpine版,体积小、漏洞少
docker pull mysql:8.0.36  # 拉取指定版本的mysql镜像,生产环境禁止用latest,必须固定版本

# 3. 查看本地所有镜像(看你下载了哪些安装包)
docker images

# 4. 给镜像打标签(给安装包改个名字,主要用于推送到私有仓库)
docker tag nginx:alpine my-nginx:v1.0

# 5. 删除镜像(卸载安装包,注意:要先删除用这个镜像创建的容器,才能删镜像)
docker rmi my-nginx:v1.0

# 6. 清理无用镜像(释放服务器磁盘空间,运维日常清理用)
docker image prune -af

第三步:容器高频命令(运维核心中的核心,日常 90% 的工作都用这些)

先从最简单的命令开始,逐步增加复杂度,每个参数都讲清楚作用,新手先把每个命令都跑一遍,看效果。

1. 核心:容器启动命令(docker run)

先跑一个最简单的 nginx 容器,实现浏览器访问你的服务器 IP,就能看到 nginx 欢迎页:

docker run -d -p 80:80 --name my-nginx nginx:alpine

每个参数的作用(必懂)

  • docker run:创建并启动一个容器
  • -d:后台运行容器,不会占用你的命令行窗口
  • -p 宿主机端口:容器端口:端口映射,把服务器的 80 端口,映射到容器的 80 端口,这样外网访问服务器 IP,就能访问到容器里的 nginx
  • --name 容器名字:给容器起一个唯一的名字,方便后续管理,不用记随机的 ID
  • 最后面的nginx:alpine:用哪个镜像来创建容器

成功验证:打开浏览器,输入你的 ECS 公网 IP,回车,能看到 nginx 的欢迎页面,就说明容器启动成功了!

2. 容器查看命令

# 查看所有正在运行的容器
docker ps

# 查看所有容器(包括已经停止、退出的容器,排查容器启动失败必用)
docker ps -a

# 查看容器的详细信息(IP地址、挂载路径、配置、状态,故障排查核心命令)
docker inspect my-nginx
3. 容器日志查看命令(排查故障头号工具)

应用启动失败、报错,90% 的问题都能通过日志找到原因,必学:

# 查看容器的全量日志
docker logs my-nginx

# 实时查看容器的最新100行日志(最常用,排查实时报错)
docker logs -f --tail 100 my-nginx
4. 进入容器命令

需要进入容器内部修改配置、查看文件时用:

# 进入运行中的容器(alpine镜像用/bin/sh,ubuntu/centos镜像用/bin/bash)
docker exec -it my-nginx /bin/sh

进入容器后,就能执行 Linux 命令,修改容器里的文件;输入exit回车,就能退出容器,回到服务器命令行。

5. 容器启停、重启、删除命令

# 停止运行中的容器
docker stop my-nginx

# 启动已经停止的容器
docker start my-nginx

# 重启容器(改了配置后重启生效)
docker restart my-nginx

# 删除容器(必须先停止容器,才能删除;生产环境谨慎操作!)
docker rm my-nginx

# 强制删除运行中的容器(紧急情况用)
docker rm -f my-nginx

# 批量清理已经退出的无用容器(运维日常清理)
docker container prune -f
6. 进阶:带数据持久化的容器启动(必学!避免数据丢失)

新手最容易踩的坑:容器删除后,里面的数据全没了!比如 mysql 容器删了,数据库里的数据就没了。

解决方法:用-v 宿主机路径:容器路径参数,把容器里的数据目录,挂载到服务器上,容器删除,服务器上的数据还在,这就是数据持久化,生产环境必用。

示例:启动一个带数据持久化的 mysql 容器

# 1. 先创建一个文件夹,用来存mysql的数据
mkdir -p /data/mysql/data

# 2. 启动mysql容器,挂载数据目录
docker run -d \
  --name my-mysql \
  -p 3306:3306 \
  -v /data/mysql/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  --restart=always \
  mysql:8.0.36

新增参数说明

  • -v 宿主机路径:容器路径:数据卷挂载,实现数据持久化
  • -e 环境变量名=值:给容器设置环境变量,这里是设置 mysql 的 root 用户密码
  • --restart=always:容器异常退出、服务器重启后,自动启动容器,生产环境必加!

新手必做实操任务(学完就练,巩固技能)

  1. 用 docker run 启动一个 nginx 容器,完成端口映射,浏览器访问 ECS 公网 IP 能正常打开 nginx 欢迎页。
  2. 用 docker run 启动一个 mysql 容器,完成数据持久化、密码配置,用本地数据库工具(如 Navicat)能正常连接。
  3. 模拟容器启动失败,用 docker logs 命令查看日志,定位报错原因。
  4. 停止、重启、删除容器,用 docker ps -a 命令查看状态变化。

阶段 3:Dockerfile 自定义镜像构建(3 天,从会用到会做)

学习目标

理解 Dockerfile 的作用,能独立编写 Dockerfile,构建自己的自定义镜像,解决官方镜像无法满足业务需求的问题,这是运维进阶的必备技能。

核心认知

Dockerfile 就是一个构建镜像的说明书,里面写了一步步的构建指令,Docker 会根据这个说明书,自动构建出你想要的镜像,实现镜像的标准化、可复制化。

第一步:先搞懂 Dockerfile 核心指令(大白话版)

不用记所有指令,先把这 8 个最常用的搞懂,就能搞定 90% 的构建场景:

指令 大白话作用 新手注意事项
FROM 指定基础镜像,比如基于 nginx、ubuntu 来构建你的镜像 必须是 Dockerfile 的第一行,优先选 alpine 轻量版,固定版本,禁止用 latest
LABEL 给镜像加标注,比如作者、版本、描述 方便镜像管理,别人用的时候知道是谁做的、干嘛的
RUN 构建镜像时执行的命令,比如安装软件、创建文件夹 多条命令尽量合并成一条,减少镜像体积
COPY 把你服务器上的文件,复制到镜像里 优先用 COPY,不要用 ADD,避免安全风险
WORKDIR 设置容器的工作目录,相当于 cd 命令 避免用 cd 来回切换目录,保证路径统一
EXPOSE 声明容器要暴露的端口 只是声明,不会自动做端口映射,提升 Dockerfile 可读性
CMD 容器启动时执行的命令 一个 Dockerfile 只有一个 CMD 生效,是容器的默认启动命令
ENV 设置环境变量 避免硬编码,方便修改配置

第二步:0 基础第一个 Dockerfile 实战(100% 能跑通)

我们来构建一个带自定义页面的 nginx 镜像,一步一步来,跟着做就能成功。

1. 准备工作
# 创建构建文件夹,进入文件夹
mkdir -p /data/docker-build/my-nginx && cd /data/docker-build/my-nginx
2. 编写 Dockerfile

执行vi Dockerfile回车,按i进入编辑模式,复制下面的内容粘贴进去,按Esc,输入:wq回车保存:

# 基础镜像:用轻量版nginx,固定版本
FROM nginx:alpine

# 镜像标注信息
LABEL maintainer="0基础Docker学习" version="v1.0" description="我的第一个自定义nginx镜像"

# 设置时区,解决容器时间和北京时间不一致的问题
RUN apk add --no-cache tzdata \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

# 把本地的页面文件,复制到镜像里的nginx网页目录
COPY index.html /usr/share/nginx/html/

# 声明暴露80端口
EXPOSE 80

# 容器启动命令,启动nginx
CMD ["nginx", "-g", "daemon off;"]
3. 编写自定义页面

执行vi index.html回车,按i进入编辑模式,复制下面的内容粘贴进去,按Esc,输入:wq回车保存:

<h1>恭喜你!成功构建了自己的第一个Docker镜像!</h1>
<p>0基础也能学会Docker,你太棒了!</p>
4. 构建镜像

执行下面的命令,Docker 会根据 Dockerfile 自动构建镜像:

# -t 给镜像起名字:版本号,. 代表当前目录(Dockerfile所在的目录)
docker build -t my-nginx:v1.0 .

执行后,会一步步输出构建过程,没有报错,最后输出「Successfully built xxxxx」,就说明镜像构建成功了!

5. 运行自定义镜像,验证效果

# 先把之前的my-nginx容器删掉,避免端口冲突
docker rm -f my-nginx

# 用你自己构建的镜像,启动容器
docker run -d -p 80:80 --name my-nginx my-nginx:v1.0

成功验证:打开浏览器,输入你的 ECS 公网 IP,回车,就能看到你写的自定义页面!恭喜你,已经掌握了自定义镜像构建的核心技能。

第三步:进阶最佳实践

  1. 非 root 用户运行:生产环境禁止用 root 用户运行容器,在 Dockerfile 里创建普通用户,用最小权限运行。
  2. 多阶段构建:把编译和运行分离,最终镜像只包含运行环境,不包含源码和编译工具,大幅减小镜像体积,降低安全风险。
  3. 健康检查:在 Dockerfile 里加 HEALTHCHECK 指令,监控容器里的服务状态,异常时自动重启。

阶段 4:Docker Compose 多容器编排(2 天,运维必备)

学习目标

理解 Compose 的作用,能编写 docker-compose.yml 文件,实现多容器一键启停、依赖管理,解决多容器部署一个个 run 的麻烦,是阿里云单节点服务器运维的核心工具。

核心认知

Docker Compose 就是一个多容器编排工具,你可以在一个 yml 文件里,定义好所有要启动的容器、端口、挂载、依赖关系,然后用一条命令,就能一键启动 / 停止所有容器,不用一个个执行 docker run 命令,效率提升 10 倍。

详细实操步骤

1. 验证安装

新版 Docker 已经自带了 Compose 插件,不用单独安装,执行下面的命令验证,能输出版本号就说明已经安装好了:

docker compose version
2. 0 基础第一个 Compose 实战(一键启动 nginx+mysql)

我们来写一个最简单的 docker-compose.yml 文件,实现一键启动 nginx 和 mysql 两个容器,带数据持久化、自动重启、依赖管理。

步骤 1:准备工作
# 创建工作目录,进入目录
mkdir -p /data/compose/lnmp && cd /data/compose/lnmp
步骤 2:编写 docker-compose.yml 文件

执行vi docker-compose.yml回车,按i进入编辑模式,复制下面的内容粘贴进去,按Esc,输入:wq回车保存:

# Compose文件版本,适配Docker 20+版本
version: '3.8'

# 服务定义:每个service对应一个容器
services:
  # Nginx服务
  nginx:
    # 用哪个镜像
    image: nginx:alpine
    # 容器名字
    container_name: compose-nginx
    # 端口映射
    ports:
      - "80:80"
    # 数据挂载
    volumes:
      - ./html:/usr/share/nginx/html
      - ./nginx/logs:/var/log/nginx
    # 依赖管理:先启动mysql,再启动nginx
    depends_on:
      - mysql
    # 重启策略:异常自动重启
    restart: always

  # MySQL服务
  mysql:
    image: mysql:8.0.36
    container_name: compose-mysql
    ports:
      - "3306:3306"
    # 环境变量:设置root密码、默认数据库
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_DATABASE: "test_db"
    # 数据持久化挂载
    volumes:
      - ./mysql/data:/var/lib/mysql
    restart: always

步骤 3:一键启动所有服务

# 后台启动所有服务,这条命令会自动读取当前目录的docker-compose.yml文件
docker compose up -d

执行后,Docker 会自动拉取镜像、创建容器、启动服务,没有报错就说明启动成功了!

步骤 4:验证效果
  1. 执行docker compose ps,能看到两个容器的状态都是Up,就说明运行正常。
  2. 浏览器访问 ECS 公网 IP,能看到 nginx 欢迎页,说明 nginx 服务正常。
  3. 用本地数据库工具连接 ECS 公网 IP:3306,用户名 root,密码 123456,能正常连接,说明 mysql 服务正常。
3. Compose 核心运维命令(必记)
# 1. 一键启动所有服务(后台运行)
docker compose up -d

# 2. 一键停止并删除所有容器、网络(不会删除挂载的数据)
docker compose down

# 3. 查看所有服务的运行状态
docker compose ps

# 4. 查看所有服务的实时日志
docker compose logs -f --tail 100

# 5. 查看指定服务的日志
docker compose logs -f nginx

# 6. 停止/启动/重启所有服务
docker compose stop
docker compose start
docker compose restart

# 7. 进入指定服务的容器
docker compose exec nginx /bin/sh

新手必做实操任务

用 Docker Compose 一键部署 WordPress 个人博客,包含 nginx+mysql+wordpress 三个服务,完成数据持久化,浏览器访问能正常安装并使用博客。

阶段 5:Docker 与阿里云生态结合(1 天,贴合阿里云运维岗位)

这部分是专门针对阿里云运维的,学完就能直接用到工作中,0 基础也能上手。

一、阿里云 ACR 容器镜像服务(私有镜像仓库)

我们前面构建的自定义镜像,只能在当前服务器上用,如果你想在其他服务器上用,或者给团队用,就需要推送到私有镜像仓库,阿里云 ACR 就是阿里云的私有镜像仓库,免费个人版完全够用。

核心实操步骤
  1. 阿里云控制台进入「容器镜像服务 ACR」,左侧找到「实例列表」→「个人实例」,先创建一个命名空间(比如叫ops-docker),再创建一个镜像仓库(比如叫my-nginx,选择私有,代码源选本地仓库)。
  2. 进入仓库详情页,就能看到官方给的操作命令,跟着执行即可,核心命令如下:
# 1. 登录ACR仓库(替换成你的阿里云账号、地域地址,杭州是cn-hangzhou)
docker login --username=你的阿里云账号 registry.cn-hangzhou.aliyuncs.com

# 2. 给本地镜像打标签(格式:仓库地址/命名空间/仓库名:版本)
docker tag my-nginx:v1.0 registry.cn-hangzhou.aliyuncs.com/ops-docker/my-nginx:v1.0

# 3. 推送镜像到ACR私有仓库
docker push registry.cn-hangzhou.aliyuncs.com/ops-docker/my-nginx:v1.0

# 4. 在其他服务器上拉取这个镜像
docker pull registry.cn-hangzhou.aliyuncs.com/ops-docker/my-nginx:v1.0

二、阿里云监控与告警配置

运维的核心工作是保障服务稳定,所以必须给 Docker 容器配置监控和告警,容器挂了、服务器资源不够了,能第一时间收到通知。

  1. 阿里云控制台进入「云监控」,左侧找到「主机监控」→「实例列表」,找到你的 ECS 服务器,安装云监控插件(一键安装)。
  2. 配置告警规则:比如 CPU 使用率超过 80%、内存使用率超过 85%、容器进程不存在,触发告警,通过钉钉 / 短信通知你。

阶段 6:0 基础可落地的实战项目(2 天,检验学习成果)

项目:基于阿里云 ECS+Docker 搭建个人博客网站

项目目标

用你前面学的所有技能,完成一个完整的项目,从镜像构建、多容器编排、HTTPS 配置、数据持久化,最终做出一个能正常访问的个人博客,学完这个项目,你就完全掌握了 Docker 运维的核心技能,甚至能写进简历里。

核心实现步骤
  1. 用 Docker Compose 编排 3 个服务:Nginx(反向代理)、WordPress(博客程序)、MySQL(数据库)。
  2. 完成所有服务的数据持久化,确保容器删除,博客数据不丢失。
  3. 给域名备案、解析到 ECS 公网 IP,配置阿里云免费 SSL 证书,实现 HTTPS 访问。
  4. 配置 Nginx 反向代理,实现域名访问博客。
  5. 配置阿里云云监控,实现服务异常告警。
  6. 编写数据定时备份脚本,每天自动备份博客数据库和文件。

阶段 7:后续进阶学习路线(阿里云运维方向)

学完上面的内容,你已经掌握了 Docker 的基础运维技能,能胜任阿里云运维的基础 Docker 相关工作,后续可以按这个路线进阶:

  1. Linux 进阶 + Shell 脚本:运维的基本功,学会写脚本,实现 Docker 容器、镜像、数据的自动化备份、清理、监控。
  2. Docker 底层原理:Namespace、Cgroup、UnionFS,理解 Docker 隔离、资源限制的底层实现。
  3. Docker 网络、存储、安全进阶:跨主机容器通信、共享存储、容器安全加固,符合生产环境等保要求。
  4. Kubernetes(K8s):Docker 是单机容器编排,K8s 是集群容器编排,是阿里云运维、云原生运维的核心技能,重点学习阿里云 ACK 容器服务。
  5. CI/CD 自动化部署:Jenkins+Docker+K8s,实现代码提交后,自动构建镜像、自动部署,实现 DevOps 全流程。
  6. 云原生可观测性:Prometheus+Grafana 监控、ELK/EFK 日志收集、链路追踪,实现全栈监控。

0 基础高频踩坑避坑指南(提前避坑,少走弯路)

  1. 浏览器访问不了服务:90% 的情况是这 3 个问题,按顺序排查:①阿里云安全组有没有开放对应的端口;②服务器防火墙有没有关闭 / 开放端口;③容器有没有正常启动,端口映射有没有写反(宿主机端口在前,容器端口在后)。
  2. 镜像拉取慢 / 超时:100% 是没配置阿里云镜像加速器,或者加速器地址写错了,重新检查配置,重启 Docker 即可。
  3. 命令执行报错权限不够:要么在命令前面加 sudo,要么执行把用户加入 docker 组的命令,重新登录服务器即可。
  4. 容器删除后数据丢失:一定要用 - v 参数做数据持久化,把容器里的数据目录挂载到服务器上,不要把数据存在容器内部。
  5. 容器启动了就自动退出:用 docker logs 命令看日志,90% 的情况是配置文件写错了、启动命令不对,或者容器里的主进程启动失败,根据日志报错修复即可。
  6. 生产环境用 latest 标签:绝对禁止!latest 是最新版,每次拉取可能版本不一样,会导致环境不一致,生产环境必须固定镜像版本。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐