0 基础阿里云运维 Docker 保姆级全流程(2026 最新)
的用户设计,全程无跳跃、无晦涩术语,每一步都有「操作目的 + 可复制命令 + 成功验证标准」,跟着走就能 100% 跑通,每天 1-2 小时,2 周就能掌握 Docker 核心运维技能。,彻底解决 “我电脑上能跑,服务器上跑不了” 的运维头号难题,是阿里云运维、云原生岗位的入门必备技能。先给 0 基础吃定心丸:Docker 没有你想的那么难,它的核心价值就是。


这份指南专为完全 0 基础、想往阿里云运维方向发展的用户设计,全程无跳跃、无晦涩术语,每一步都有「操作目的 + 可复制命令 + 成功验证标准」,跟着走就能 100% 跑通,每天 1-2 小时,2 周就能掌握 Docker 核心运维技能。
先给 0 基础吃定心丸:Docker 没有你想的那么难,它的核心价值就是把应用和它需要的所有环境打包成一个 “集装箱”,一次打包,到处运行,彻底解决 “我电脑上能跑,服务器上跑不了” 的运维头号难题,是阿里云运维、云原生岗位的入门必备技能。
学前必看:0 基础学习核心原则
- 先跑通,再深究原理:不要一开始死记硬背命令和底层概念,先跟着步骤把操作做成功,有正反馈,再回头理解为什么这么做。
- 小步快跑,每步必验证:每执行完一个操作,就做一次验证,确认成功再往下走,避免攒了一堆操作最后报错,找不到哪里出了问题。
- 拒绝死记硬背:命令不用背,知道它是干嘛的、用的时候能查到就行,运维工作本来就是边查边做,重点是知道用什么命令解决什么问题。
- 全程贴合阿里云场景:所有操作都基于阿里云 ECS 服务器,学完就能直接用到阿里云运维工作中,不是无用的理论。
前置准备:0 基础也能搞定的阿里云环境搭建(1 天搞定)
这是最容易卡壳的一步,我会把所有细节讲透,哪怕你从来没碰过服务器,也能跟着完成。
一、买一台适合学习的阿里云 ECS 服务器
1. 配置选择(学习够用,成本极低)
| 配置项 | 推荐选择 | 原因 |
|---|---|---|
| 实例规格 | 突发性能实例 t6/t8 1 核 2G | 学习完全够用,包年包月每月仅 30-50 元,按量付费每小时几分钱 |
| 操作系统 | Alibaba Cloud Linux 3 | 阿里云原生系统,对 Docker 深度优化,兼容 CentOS 命令,免费、稳定、安全,0 基础首选 |
| 地域 | 离你最近的城市(如杭州 / 上海 / 北京) | 访问速度快 |
| 网络 | 必须分配公网 IP | 不然你无法远程连接服务器 |
| 计费方式 | 新手优先选「包年包月」 | 不用随时关停,省心,成本可控 |
2. 购买极简步骤
- 支付宝 / 淘宝账号登录阿里云官网,搜索「云服务器 ECS」,点击「立即购买」
- 选择「快速购买」(不用管复杂的自定义配置),按上面的表格选好配置
- 设置登录凭证:选择「密码」,设置一个好记的 root 管理员密码(一定要记好!后面登录要用)
- 核对费用,完成支付,等待 1-3 分钟,实例就会创建完成。
二、配置安全组(必做!不然后面访问不了)
安全组就是阿里云的虚拟防火墙,默认只开放了 22 端口,我们需要提前开放后续要用的端口:
- 阿里云控制台进入「ECS 实例详情页」,找到「安全组」,点击进入安全组配置页
- 点击「入方向规则」→「添加规则」,按下面的表格添加 3 条规则:
| 端口范围 | 授权对象 | 用途 |
|---|---|---|
| 22/22 | 0.0.0.0/0 | 远程连接服务器用 |
| 80/80 | 0.0.0.0/0 | 网站 / 网页访问用 |
| 443/443 | 0.0.0.0/0 | HTTPS 访问用 |
- 点击确定,配置就生效了。
三、远程连接服务器(0 基础首选,不用装任何软件)
阿里云自带的Workbench 远程连接,浏览器直接用,不用下载 Xshell 等工具,0 门槛:
- 回到 ECS 实例详情页,点击右上角的「远程连接」
- 选择「Workbench 远程连接」,点击「立即登录」
- 弹出的窗口中,用户名填
root,密码填你买服务器时设置的 root 密码,点击确定 - 看到黑色的命令行窗口,出现
[root@iZxxxxxx ~]#这样的提示,就说明登录成功了!
补充:如果登录失败,先检查密码有没有输错,再检查安全组有没有开放 22 端口。
四、0 基础必学的 5 个 Linux 命令(后面所有操作的基础)
不用学复杂的 Linux 命令,先把这 5 个搞懂,足够你完成 Docker 全流程学习:
cd 目录名:进入某个文件夹(比如cd /home就是进入 home 文件夹)ls:查看当前文件夹里的所有文件 / 文件夹mkdir 文件夹名:创建一个新文件夹(比如mkdir docker-test就是创建一个叫 docker-test 的文件夹)vi 文件名:创建 / 编辑一个文件(核心操作必记):- 输入
vi 文件名回车后,按键盘i键,进入编辑模式,就能输入内容了 - 编辑完成后,先按
Esc键,退出编辑模式 - 再输入
:wq,按回车,就能保存文件并退出;如果输错了不想保存,输入:q!回车,强制不保存退出
- 输入
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:获取你的专属加速器地址
- 阿里云控制台搜索「容器镜像服务 ACR」,点击进入(第一次进入会提示开通,选「个人版」,免费开通即可)
- 左侧导航栏找到「镜像工具」→「镜像加速器」
- 就能看到你的专属加速器地址,格式是
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会报错(提示你不在该组中)。
两条命令的完整配合流程
- 第一步(永久配置):执行
sudo usermod -aG docker $USER,把你加入 docker 组(写入系统配置文件)。 - 第二步(即时生效):执行
newgrp docker,让当前终端窗口立即获得权限。 - 验证:执行
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:容器异常退出、服务器重启后,自动启动容器,生产环境必加!
新手必做实操任务(学完就练,巩固技能)
- 用 docker run 启动一个 nginx 容器,完成端口映射,浏览器访问 ECS 公网 IP 能正常打开 nginx 欢迎页。
- 用 docker run 启动一个 mysql 容器,完成数据持久化、密码配置,用本地数据库工具(如 Navicat)能正常连接。
- 模拟容器启动失败,用 docker logs 命令查看日志,定位报错原因。
- 停止、重启、删除容器,用 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,回车,就能看到你写的自定义页面!恭喜你,已经掌握了自定义镜像构建的核心技能。
第三步:进阶最佳实践
- 非 root 用户运行:生产环境禁止用 root 用户运行容器,在 Dockerfile 里创建普通用户,用最小权限运行。
- 多阶段构建:把编译和运行分离,最终镜像只包含运行环境,不包含源码和编译工具,大幅减小镜像体积,降低安全风险。
- 健康检查:在 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:验证效果
- 执行
docker compose ps,能看到两个容器的状态都是Up,就说明运行正常。 - 浏览器访问 ECS 公网 IP,能看到 nginx 欢迎页,说明 nginx 服务正常。
- 用本地数据库工具连接 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 就是阿里云的私有镜像仓库,免费个人版完全够用。
核心实操步骤
- 阿里云控制台进入「容器镜像服务 ACR」,左侧找到「实例列表」→「个人实例」,先创建一个命名空间(比如叫
ops-docker),再创建一个镜像仓库(比如叫my-nginx,选择私有,代码源选本地仓库)。 - 进入仓库详情页,就能看到官方给的操作命令,跟着执行即可,核心命令如下:
# 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 容器配置监控和告警,容器挂了、服务器资源不够了,能第一时间收到通知。
- 阿里云控制台进入「云监控」,左侧找到「主机监控」→「实例列表」,找到你的 ECS 服务器,安装云监控插件(一键安装)。
- 配置告警规则:比如 CPU 使用率超过 80%、内存使用率超过 85%、容器进程不存在,触发告警,通过钉钉 / 短信通知你。
阶段 6:0 基础可落地的实战项目(2 天,检验学习成果)
项目:基于阿里云 ECS+Docker 搭建个人博客网站
项目目标
用你前面学的所有技能,完成一个完整的项目,从镜像构建、多容器编排、HTTPS 配置、数据持久化,最终做出一个能正常访问的个人博客,学完这个项目,你就完全掌握了 Docker 运维的核心技能,甚至能写进简历里。
核心实现步骤
- 用 Docker Compose 编排 3 个服务:Nginx(反向代理)、WordPress(博客程序)、MySQL(数据库)。
- 完成所有服务的数据持久化,确保容器删除,博客数据不丢失。
- 给域名备案、解析到 ECS 公网 IP,配置阿里云免费 SSL 证书,实现 HTTPS 访问。
- 配置 Nginx 反向代理,实现域名访问博客。
- 配置阿里云云监控,实现服务异常告警。
- 编写数据定时备份脚本,每天自动备份博客数据库和文件。
阶段 7:后续进阶学习路线(阿里云运维方向)
学完上面的内容,你已经掌握了 Docker 的基础运维技能,能胜任阿里云运维的基础 Docker 相关工作,后续可以按这个路线进阶:
- Linux 进阶 + Shell 脚本:运维的基本功,学会写脚本,实现 Docker 容器、镜像、数据的自动化备份、清理、监控。
- Docker 底层原理:Namespace、Cgroup、UnionFS,理解 Docker 隔离、资源限制的底层实现。
- Docker 网络、存储、安全进阶:跨主机容器通信、共享存储、容器安全加固,符合生产环境等保要求。
- Kubernetes(K8s):Docker 是单机容器编排,K8s 是集群容器编排,是阿里云运维、云原生运维的核心技能,重点学习阿里云 ACK 容器服务。
- CI/CD 自动化部署:Jenkins+Docker+K8s,实现代码提交后,自动构建镜像、自动部署,实现 DevOps 全流程。
- 云原生可观测性:Prometheus+Grafana 监控、ELK/EFK 日志收集、链路追踪,实现全栈监控。
0 基础高频踩坑避坑指南(提前避坑,少走弯路)
- 浏览器访问不了服务:90% 的情况是这 3 个问题,按顺序排查:①阿里云安全组有没有开放对应的端口;②服务器防火墙有没有关闭 / 开放端口;③容器有没有正常启动,端口映射有没有写反(宿主机端口在前,容器端口在后)。
- 镜像拉取慢 / 超时:100% 是没配置阿里云镜像加速器,或者加速器地址写错了,重新检查配置,重启 Docker 即可。
- 命令执行报错权限不够:要么在命令前面加 sudo,要么执行把用户加入 docker 组的命令,重新登录服务器即可。
- 容器删除后数据丢失:一定要用 - v 参数做数据持久化,把容器里的数据目录挂载到服务器上,不要把数据存在容器内部。
- 容器启动了就自动退出:用 docker logs 命令看日志,90% 的情况是配置文件写错了、启动命令不对,或者容器里的主进程启动失败,根据日志报错修复即可。
- 生产环境用 latest 标签:绝对禁止!latest 是最新版,每次拉取可能版本不一样,会导致环境不一致,生产环境必须固定镜像版本。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)