第二节课(1/3):非大陆安装 Docker & Docker Compose
这一节我们来解决最关键的一件事:装上 Docker!
2.1、执行命令(非大陆 VPS)
如果你用的是非大陆 VPS(比如 Racknerd纽约,腾讯云香港 等),下面这几条命令直接复制运行就行:
# Docker 一键安装
curl -fsSL https://get.docker.com | bash
# Docker Compose 安装
sudo curl -L "https://github.com/docker/compose/releases/download/v2.36.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 设置 Docker 开机自启
sudo systemctl enable docker
2.2、拆词解释(小白速通、老鸟可跳)
我们还是来“逐词拆解”,看看这些命令到底做了啥!
2.2.0 Docker 是什么?
一句话解释:
Docker 就是一种“打包好了一切的万能软件盒子”。
你可以把 Docker 想象成是一个“快餐打包盒”,把软件程序、它需要的环境(比如系统依赖、库、配置等)全都打包在一起,放进一个小盒子里。这种小盒子我们叫做 容器(Container)。
这个容器你拿到哪台机器上运行都行 —— 不怕“依赖装不上”,也不怕“系统版本不对”。
2.2.1.1 举个例子:
比如你想在 Ubuntu 服务器上运行一个网站,它需要:
- Python 3.11
- 某个版本的 Flask 框架
- 某些 Linux 系统依赖包
- 一个配置好的 nginx 网页服务器
用传统方式,你要手动安装、调试这些东西,很容易出错、版本不兼容,搞起来非常麻烦。
但如果别人把整个网站 + 所有环境都“打包”成了一个 Docker 容器,你只要一条命令就能跑起来:
docker run example/website
就像点了一份外卖,热好了就能吃,完全不用自己炒菜!
2.2.1.2 Docker 在 Linux(比如 Ubuntu)里到底干了什么?
在 Ubuntu 中,Docker 起到了两个主要作用:
- “虚拟厨房”功能:
它让每个软件都在“自己的隔离空间”运行,互不干扰,像是一个个微型系统。
—— 这样你可以在一台机器上同时运行 10 个服务,它们之间互不打架。 - “一键部署神器”:
Docker 容器是标准化的,一份镜像在任何一台装了 Docker 的机器上都能跑。
—— 极大地方便了部署和备份。
2.2.1.3 为什么大家都在用 Docker?
好处 | 解释 |
---|---|
✅ 轻量 | 跑得快,不像传统虚拟机那么重。 |
✅ 隔离性强 | 一个服务崩了,不会影响别的。 |
✅ 快速部署 | 一条命令搞定整个网站或项目。 |
✅ 开发友好 | 团队都用一样的容器,不用再“你这能跑,我这报错”。 |
总之,Docker 就是帮你“打包”和“跑程序”的神器,适合把一个服务一键部署在服务器上,尤其是 Linux 服务器如 Ubuntu。
2.2.1 第一句拆解
curl -fsSL https://get.docker.com | bash
2.2.1.1 curl 是什么?
curl
是一个用来从互联网下载内容的命令行工具。
你可以把它当成“命令行版的浏览器”:
- 输入网址,它就能下载页面
- 支持 HTTPS、FTP 等协议
- 常用于下载脚本、API 请求等
在这条命令里:
curl -fsSL https://get.docker.com | bash
它就是从 https://get.docker.com
下载一个 自动安装 Docker 的脚本,并交给 bash
执行。
2.2.1.2 -fsSL
是啥意思?
这是四个常见的 curl 参数缩写:
参数 | 意义 |
---|---|
-f |
出错时不输出错误页面(fail silently) |
-s |
安静模式,不显示进度条(silent) |
-S |
和 -s 配合,在出错时才显示错误信息 |
-L |
遇到重定向(302/301)时自动跟随(location) |
所以,这段命令的意思就是:
“从 get.docker.com
安静地下载脚本,如果遇到重定向也能顺利跳转,然后交给 bash 执行。”
2.2.1.3 bash
又是干嘛的?
这是 Linux 默认的命令解释器,常见的 shell。
你可以简单理解为“命令行的大脑”,它负责:
- 接收你的命令
- 按顺序执行脚本里的命令
- 报错 / 提示 / 输出结果
所以整个命令翻译成中文就是:
“请从 Docker 官网下载官方安装脚本,然后交给系统自动执行,给我装好 Docker。”
2.2.2 第二句拆解:
sudo curl -L "https://github.com/docker/compose/releases/download/
v2.36.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
这一大串其实就是:
- 下载 对应你系统版本 的 docker-compose 二进制文件
- 放到
/usr/local/bin/
路径下(这是默认可以执行的路径)
✅ $(uname -s)
是获取你当前系统的类型(比如 Linux)
✅ $(uname -m)
是获取你当前的 CPU 架构(比如 x86_64)
它们组合起来后,自动匹配适合你服务器的版本,不用手动挑!
2.2.2.1 sudo 是啥意思?
sudo
是 “Super User DO” 的缩写。
📢 就是“以管理员身份执行命令”的意思。
有点像 Windows 的“以管理员身份运行”。
为什么要用 sudo
?
因为 /usr/local/bin/
是系统级路径,普通用户没权限往里写文件,所以得提权。
2.2.2.2 chmod +x 又是干嘛的?
chmod
是 “change mode”,改权限的意思。
+x
是加上可执行权限。
也就是说:我们把下载下来的 docker-compose
文件设为“可以运行的程序”。
没有这一句的话,文件是死的,不能运行!
我建议你先把这些命令复制粘贴跑一遍,然后回来再细品上面的解释 😎
接下来我们将继续讲解国内 VPS 的安装方法,以及 Docker 日志和 IPv6 的可选优化。
第二节课(2/3):在大陆安装 Docker & Docker Compose
如果你用的是国内 VPS(比如阿里云、腾讯云广州、华为云、轻量服务器大陆节点等),直接用国外的安装脚本可能会很慢,甚至挂掉。
所以我们推荐使用国内镜像源安装!
2.1、执行命令(大陆 VPS )
已失效,替换方案前往 失效命令汇总
# Docker 安装(使用 DaoCloud 镜像源)
curl -sSL https://get.daocloud.io/docker | sh
# Docker Compose 安装(来自 DaoCloud)
curl -L https://get.daocloud.io/docker/compose/releases/download/
v2.23.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 添加可执行权限
chmod +x /usr/local/bin/docker-compose
# 设置 Docker 开机启动
systemctl enable docker
2.2 拆词解释(小白速通、老鸟可跳)
来,我们还是像之前一样“拆词讲解”,看看到底都做了什么:
2.2.1 第一句拆解
curl -sSL https://get.daocloud.io/docker | sh
这条和之前的非大陆版类似,只是换成了 DaoCloud 提供的大陆镜像,下载速度更快,成功率更高。
关键词 | 含义 |
---|---|
curl |
命令行下载工具 |
-sSL |
静默下载 + 跟踪重定向 |
sh |
是 shell 的另一种写法,和 bash 类似,也能执行脚本 |
你可以理解为:
请从 DaoCloud 拉取 Docker 安装脚本,然后在本机运行。”
2.2.2 第二句拆解
Docker Compose 安装(大陆源)
curl -L https://get.daocloud.io/docker/compose/releases/download/
v2.23.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
和非大陆那一条一模一样,就是把 GitHub 地址换成了内陆的 DaoCloud 镜像,速度大幅提升。
注意:v2.23.3
是截至写稿时比较新的版本(你也可以自己上 GitHub 查看最新版本)。
执行完这条命令后,记得给它加运行权限:
chmod +x /usr/local/bin/docker-compose
如果你是新手,并不确定自己是不是“大陆 VPS”,可以直接复制这组命令来执行
只有在这组命令无法访问时,才考虑用国外那组。
第二节课(2.5/3):补充:配置 Docker 日志 & IPv6(进阶优化,可跳过)
为什么要改日志配置?
Docker 默认会不停记录日志,久而久之可能导致磁盘被日志填爆……
所以我们加一段配置,让日志保持在一个“安全的限度”内。
2.1 执行命令:
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF
再执行:
sudo systemctl restart docker
2.2 拆句解释
配置项 | 作用 |
---|---|
"log-driver": "json-file" |
日志驱动,记录为 JSON 格式 |
"max-size": "20m" |
每个日志文件最多 20MB |
"max-file": "3" |
最多保留 3 个轮转日志文件 |
"ipv6": true |
启用 IPv6 |
"fixed-cidr-v6" |
指定一个 IPv6 地址段 |
"experimental": true |
开启 Docker 实验特性(比如后续某些 beta 功能) |
"ip6tables": true |
支持 IPv6 的防火墙规则 |
这样配置完之后:
- 你的日志就不会无脑暴涨
- 你的容器也支持 IPv6(以后玩点新花样也方便)
第二节课(3/3):验证 Docker 安装成功 & 基础命令扫盲
Docker 装好了,那怎么确定它真的“装成功了”?
别急,我们一步步来。
2.1、执行命令(1)
检查 Docker 安装是否成功
docker version
2.2、拆词解释(1)(小白速通、老鸟可跳)
我们先来看看这个命令在说啥:
单词 | 释义 |
---|---|
docker |
是我们刚安装的软件名,全称是Docker Engine,容器引擎 |
version |
英文就是“版本”的意思(是不是很熟) |
所以:docker version
这句的意思是:
💬 “嘿 docker,告诉我你自己是什么版本的。”
如果你看到类似下面这样的输出:
Client: Docker Engine - Community
Version: 24.0.7
...
Server: Docker Engine - Community
Version: 24.0.7
...
🎉 恭喜你,Docker 装好了!
2.3、执行命令(2)
检查 Docker Compose 是否安装成功
docker-compose version
或者(如果你使用的是新版 v2):
docker compose version
注意看,docker-compose
(带中划线)和 docker compose
(空格)都有人用,新版推荐用空格版,以后也会逐步统一
2.4、拆词解释(2)(小白速通、老鸟可跳)
单词 | 释义 |
---|---|
compose |
动词“组成、编排”的意思 |
docker compose |
就是“把多个 Docker 容器编排起来运行”的工具 |
也就是说,Docker 是单个容器的管理工具,Docker Compose 是“多个容器的指挥家”。
你可以把它理解为:
Docker 是乐手,Compose 是指挥。
输出长这样:
Docker Compose version v2.23.3
🆗,大功告成!
总结
步骤 | 内容 |
---|---|
1️⃣ | 用 docker version 查看 Docker 是否装好 |
2️⃣ | 用 docker compose version 检查 Compose 是否 OK |
3️⃣ | 用 docker run hello-world 测试能不能拉镜像跑容器 |
4️⃣ | 至此,准备工作完毕 ✅,接下来可以部署我们的小记事本 Memos 啦! |
下一节课:正式启动我们的在线笔记 Memos!
我们将会:
📂 拉镜像
🛠 配置文件夹
🚀 一条命令启动 Memos!
评论区