"忘掉枯燥的 PPT 和死记硬背的参数。这一次,我们玩真的。"
系统核心 AI "Moby" 已离线。所有的服务容器(Containers)都已陷入瘫痪、死锁或损坏状态。整个开发环境目前处于静默隔离模式。
你,作为新晋的 DevOps 特勤员,是唯一能连接到控制台的人。
这不是一次普通的作业,而是一场 CTF (Capture The Flag) 夺旗挑战。 我们将你扔进了一个支离破碎的 Docker 环境中。这里有 7 个损坏的关卡,每一关都对应一个真实的 Docker 核心技术点。
你需要利用手中的终端(Terminal)作为武器:
准备好了吗?启动你的 CNB。 第一关的入口已经在那里等着你了
| 关卡 | 技术点 | 难度 |
|---|---|---|
| Level 1 | docker logs - 日志分析 | ⭐ |
| Level 2 | docker run -p - 端口映射 | ⭐ |
| Level 3 | docker exec - 容器内部访问 | ⭐⭐ |
| Level 4 | docker run -e - 环境变量注入 | ⭐⭐ |
| Level 5 | docker run -v - 数据卷挂载 | ⭐⭐⭐ |
| Level 6 | docker network - 容器网络通信 | ⭐⭐⭐ |
| Level 7 | Multi-stage Build - 镜像优化 | ⭐⭐⭐⭐ (BOSS) |
| Level 8 | GitHub PR - 提交成果 | ⭐ (FINAL) |
cd level1
docker build -t moby:level1 .
docker run moby:level1
# 提示: 使用 docker logs 查看容器输出历史
cd level2
docker build -t moby:level2 .
docker run moby:level2
# 提示: 程序监听的端口可能和 EXPOSE 不一样哦
cd level3
docker build -t moby:level3 .
docker run -d --name level3 moby:level3
# 提示: 使用 docker exec 进入容器寻找隐藏文件
cd level4
docker build -t moby:level4 .
docker run moby:level4
# 提示: 程序需要特定的环境变量才能启动
cd level5
docker build -t moby:level5 .
docker run moby:level5
# 提示: 程序需要读取主机上的配置文件
cd level6
docker build -f Dockerfile.vault -t moby:vault .
docker build -f Dockerfile.client -t moby:client .
# 提示: 两个容器需要在同一个自定义网络中才能通过名称通信
cd level7
# 查看臃肿的 Dockerfile
cat Dockerfile.broken
# 你的任务: 创建一个优化后的 Dockerfile,让镜像小于 10MB
# 验证: ./verify.sh moby-core
# 1. Fork 本仓库
# 2. 创建提交目录
mkdir -p submissions/YOUR_USERNAME/level7
# 3. 复制你的 Dockerfile 和完成记录
cp level7/Dockerfile submissions/YOUR_USERNAME/level7/
# 4. 创建 completion.json (参考 submissions/.template/)
# 5. 本地验证
./level8/validate.sh YOUR_USERNAME
# 6. 提交 PR,获得通关证书!
| 关卡 | Flag | 解锁下一关镜像 Tag |
|---|---|---|
| Level 1 | FLAG{LOGS_TELL_THE_TRUTH} | level2-logs_tell_the_truth |
| Level 2 | FLAG{PORTS_ARE_GATES} | level3-ports_are_gates |
| Level 3 | FLAG{EXEC_IS_YOUR_WEAPON} | level4-exec_is_your_weapon |
| Level 4 | FLAG{ENV_VARS_ARE_KEYS} | level5-env_vars_are_keys |
| Level 5 | FLAG{VOLUMES_BIND_WORLDS} | level6-volumes_bind_worlds |
| Level 6 | FLAG{NETWORKS_CONNECT_ALL} | level7-networks_connect_all |
| Level 7 | FLAG{MASTER_OF_CONTAINERS_XMB} | Level 8 解锁 |
| Level 8 | FLAG{DOCKER_GRADUATE_XXXXXXXX} | 🏆 官方证书! |
镜像仓库: docker.cnb.cool/opencamp/learning-docker/project-moby
示例: 完成 Level 4 获得 Flag 后,拉取 Level 5 镜像:
docker pull docker.cnb.cool/opencamp/learning-docker/project-moby:level5-env_vars_are_keys
完成挑战后,你将掌握以下 Docker 核心技能:
docker logs 排查问题docker exec 进入运行中的容器祝你好运,特工!🕵️♂️