跳到内容

元数据卡

  • 前置知识:Docker 基础概念和 Compose(上一页)
  • 预计时间:15 分钟
  • 完成标志:能动手运行 Docker 容器、写 Dockerfile、排查常见问题

热身(5 分钟)

  1. 运行 docker run -d -p 8080:80 nginx,访问 localhost:8080 确认能打开 nginx 欢迎页。
  2. 运行 docker ps 查看容器列表。
  3. 运行 docker stop $(docker ps -q) 停止所有容器,然后 docker ps 确认都停了。
  4. 运行 docker rm $(docker ps -aq) 清理所有停止的容器。

挑战(15 分钟)

为你的练习项目写一个 Dockerfile 和 docker-compose.yml

  1. 写一个最简单的 Web 应用(Python Flask 或 Java Spring Boot 都行)
  2. 编写 Dockerfile 打包它
  3. 编写 docker-compose.yml 包含应用 + 数据库两个服务
  4. 用 Volume 持久化数据库数据
  5. docker compose up -d 启动

排障

场景 1:"Port is already allocated"

宿主机上的 8080 端口已经被其他程序占用了。排查:

bash
lsof -i :8080

找到占用的进程,杀掉它,或者换个端口(比如 -p 8081:80)。

场景 2:"容器重启后数据没了"

你运行了一个 MySQL 容器,写了数据进去,docker rmdocker run——数据全没了。

原因:容器的文件系统是临时的。用 Volume 解决:

bash
docker volume create mydata
docker run -v mydata:/var/lib/mysql mysql:8.0

场景 3:无法从 Docker Hub 下载镜像

国内环境可能需要配置镜像加速器。在 Docker Desktop 的 Settings → Docker Engine 中修改 registry-mirrors

场景 4:docker: command not found

Docker Desktop 没装好。去 docker.com 下载安装。WSL2 用户需要在 Windows 上装 Docker Desktop 并启用 WSL2 集成。


下一站:从代码到运行的完整链路

打包好了。现在走完最后一步:从编辑器到部署的全链路。

看完整链路 →

Built with VitePress | Software Systems Atlas