测试Docker部署是否成功需要从多个维度进行验证。以下是详细的测试方法和步骤:
# 查看正在运行的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 检查容器日志
docker logs <container_name_or_id>
# 检查容器详细信息
docker inspect <container_name_or_id>
# 测试端口是否开放
telnet <host> <port>
# 或
nc -zv <host> <port>
# 对于HTTP服务
curl -I http://<host>:<port>
# 测试REST API
curl -X GET http://<host>:<port>/api/health
curl -X POST http://<host>:<port>/api/endpoint -d '{"key":"value"}'
如果是web应用,直接在浏览器访问 http://<host>:<port>
# 进入容器内部
docker exec -it <container_name_or_id> /bin/bash
# 在容器内部检查进程
ps aux
# 检查网络连接
netstat -tuln
# 检查服务日志(根据应用不同路径不同)
cat /var/log/app.log
# 如果Dockerfile中定义了HEALTHCHECK
docker inspect --format='{{json .State.Health}}' <container_name_or_id>
# 检查资源使用情况
docker stats <container_name_or_id>
# 压力测试(根据应用类型选择合适工具)
ab -n 1000 -c 100 http://<host>:<port>/api/endpoint
#!/bin/bash
CONTAINER_NAME="myapp"
PORT=8080
HEALTH_ENDPOINT="/health"
# 检查容器是否运行
if [ $(docker inspect -f '{{.State.Running}}' $CONTAINER_NAME) = "true" ]; then
echo "Container is running"
else
echo "Container is not running"
exit 1
fi
# 检查端口是否开放
if nc -z localhost $PORT; then
echo "Port $PORT is open"
else
echo "Port $PORT is not open"
exit 1
fi
# 检查健康端点
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:$PORT$HEALTH_ENDPOINT)
if [ "$RESPONSE" = "200" ]; then
echo "Health check passed"
else
echo "Health check failed with status $RESPONSE"
exit 1
fi
echo "All tests passed - Deployment successful"
通过以上全面的测试,可以确保Docker部署的应用程序正常运行且符合预期。