元数据卡
- 前置知识:Docker 基础概念和 Compose(上一页)
- 预计时间:15 分钟
- 完成标志:能动手运行 Docker 容器、写 Dockerfile、排查常见问题
热身(5 分钟)
- 运行
docker run -d -p 8080:80 nginx,访问localhost:8080确认能打开 nginx 欢迎页。 - 运行
docker ps查看容器列表。 - 运行
docker stop $(docker ps -q)停止所有容器,然后docker ps确认都停了。 - 运行
docker rm $(docker ps -aq)清理所有停止的容器。
挑战(15 分钟)
为你的练习项目写一个 Dockerfile 和 docker-compose.yml:
- 写一个最简单的 Web 应用(Python Flask 或 Java Spring Boot 都行)
- 编写 Dockerfile 打包它
- 编写
docker-compose.yml包含应用 + 数据库两个服务 - 用 Volume 持久化数据库数据
- 用
docker compose up -d启动
排障
场景 1:"Port is already allocated"
宿主机上的 8080 端口已经被其他程序占用了。排查:
bash
lsof -i :8080找到占用的进程,杀掉它,或者换个端口(比如 -p 8081:80)。
场景 2:"容器重启后数据没了"
你运行了一个 MySQL 容器,写了数据进去,docker rm 再 docker 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 集成。
→ 下一站:从代码到运行的完整链路
打包好了。现在走完最后一步:从编辑器到部署的全链路。