检查版本:
docker --version运行 Nginx:
docker run -d -p 8080:80 --name my-web nginx:alpine验证: 打开浏览器访问
http://localhost:8080,应看到 “Welcome to nginx!”
页面。
停止并清理:
docker stop my-web
docker rm my-web创建目录 docker-lab,并在其中创建
app.py:
from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def hello():
return f"Hello from Container! Hostname: {os.environ.get('HOSTNAME')}"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)创建 requirements.txt:
flask
Dockerfile:FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY app.py .
CMD ["python", "app.py"]docker build -t my-flask-app:v1 .docker run -d -p 5000:5000 my-flask-app:v1
curl http://localhost:5000mkdir -p ~/html
echo "<h1>Custom Home Page</h1>" > ~/html/index.htmldocker run -d -p 8081:80 -v ~/html:/usr/share/nginx/html nginx:alpinehttp://localhost:8081,应看到 “Custom Home Page”。mkdir -p docker-compose-lab && cd docker-compose-labapp.py:from flask import Flask
import redis
import os
app = Flask(__name__)
redis_client = redis.Redis(host='redis', port=6379)
@app.route('/')
def hello():
count = redis_client.incr('visits')
return f"Visit #{count} from container {os.environ.get('HOSTNAME', 'unknown')}"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)Dockerfile:FROM python:3.12-slim
WORKDIR /app
RUN pip install --no-cache-dir flask redis
COPY app.py .
CMD ["python", "app.py"]docker-compose.yml:services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- redis
redis:
image: redis:7-alpine
volumes:
- redis-data:/data
volumes:
redis-data:# 启动所有服务
docker compose up -d --build
# 查看服务状态
docker compose ps
# 多次访问,观察计数器递增
curl http://localhost:5000
curl http://localhost:5000
# 查看日志
docker compose logs web
# 清理(数据卷一并删除)
docker compose down -vapp.py 中 host='redis' 而不是
host='localhost'?(提示:容器网络隔离)redis-data
volume,重启后计数器还在吗?为什么?提交 lab03b/report.md:
curl 命令的输出结果截图。http://localhost:8081 的页面截图。.cast(建议命名
lab03b/lab03b.cast,便于后续转为 text
进行智能批改)。录屏应包含 Docker
镜像构建、容器运行和验证的全过程。