main
Zeng wei (曾威) 7 months ago
parent f9c9382063
commit 2147b9bfbb

@ -0,0 +1,51 @@
# 操作系统
alpine:3.18
ubuntu:22.04
centos:7
# 编程语言
python:3.11-slim
node:18-alpine
golang:1.20
openjdk:17-jdk
# 数据库
mysql:8.0
redis:7.0-alpine
postgres:15-alpine
mongo:6.0
# Web服务器
nginx:1.25-alpine
traefik:v2.10
httpd:2.4-alpine
# 工具类
busybox:1.36
portainer/portainer-ce:2.19
registry:2
# 监控日志
prom/prometheus:v2.47
grafana/grafana:10.0
elasticsearch:8.9
# CI/CD
jenkins/jenkins:2.426-jdk17
gitlab/gitlab-ce:16.3
# 容器工具
docker:dind
containerd/nerdctl:1.5
# 大数据
apache/spark:3.4.1
apache/kafka:3.5
# 机器学习
tensorflow/tensorflow:2.13-gpu
pytorch/pytorch:2.0.1-cuda11.7
# gcr.io 镜像替代方案
# quay-mirror.ccs.tencentyun.com/coreos/flannel:v0.22.3
# registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9

@ -0,0 +1,28 @@
alpine:3.18
ubuntu:22.04
centos:7
python:3.11-slim
node:18-alpine
golang:1.20
openjdk:17-jdk
mysql:8.0
redis:7.0-alpine
postgres:15-alpine
mongo:6.0
nginx:1.25-alpine
traefik:v2.10
httpd:2.4-alpine
busybox:1.36
portainer/portainer-ce:2.19
registry:2
prom/prometheus:v2.47
grafana/grafana:10.0
elasticsearch:8.9
jenkins/jenkins:2.426-jdk17
gitlab/gitlab-ce:16.3
docker:dind
containerd/nerdctl:1.5
apache/spark:3.4.1
apache/kafka:3.5
tensorflow/tensorflow:2.13-gpu
pytorch/pytorch:2.0.1-cuda11.7

@ -0,0 +1,43 @@
#!/bin/bash
# 描述:利用国内镜像源加速拉取,但保留原始镜像名称
# 作者:你的名字
# 日期:$(date +%Y-%m-%d)
# 定义镜像列表文件
IMAGE_LIST="images.txt"
LOG_FILE="pull.log"
FAILED_FILE="failed.txt"
# 清空旧日志
> "$LOG_FILE"
> "$FAILED_FILE"
# 开始拉取
total=$(wc -l < "$IMAGE_LIST")
current=1
echo "===== 开始批量拉取镜像(共 $total 个) ====="
while read -r image; do
echo "[$current/$total] 拉取镜像: $image"
# 执行拉取命令
if docker pull $image >> "$LOG_FILE" 2>&1; then
echo "成功: $image"
else
echo "失败: $image" | tee -a "$FAILED_FILE"
fi
((current++))
echo "----------------------------------------"
done < "$IMAGE_LIST"
# 输出统计结果
success=$(grep -c "成功:" "$LOG_FILE")
failed=$(wc -l < "$FAILED_FILE")
echo "===== 拉取完成 ====="
echo "成功: $success"
echo "失败: $failed"
[[ $failed -ne 0 ]] && echo "查看失败列表: cat $FAILED_FILE"

@ -0,0 +1,80 @@
#!/bin/bash
# 描述批量推送本地所有镜像到Harbor仓库
# 作者:运维工程师
# 使用方式修改下方HARBOR配置后直接运行
### 配置区(根据实际情况修改) ###
HARBOR_URL="192.168.31.248:7443" # Harbor地址
PROJECT_NAME="library" # Harbor项目名称
MAX_RETRY=2 # 单镜像推送失败重试次数
CONCURRENT_PUSH=3 # 并行推送数(根据机器性能调整)
### 脚本核心逻辑(无需修改) ###
FAILED_LOG="failed_images.log"
TMP_IMAGE_LIST="/tmp/image_list.txt"
# 登录Harbor安全提示建议使用凭证文件而非明文密码
echo "请登录Harbor仓库 $HARBOR_URL"
docker login $HARBOR_URL || {
echo "Harbor登录失败脚本终止。"
exit 1
}
# 生成镜像列表排除Harbor自身镜像
docker images --format "{{.Repository}}:{{.Tag}}" |
grep -vE "^$HARBOR_URL|^<none>|^REPOSITORY" > $TMP_IMAGE_LIST
TOTAL_IMAGES=$(wc -l < $TMP_IMAGE_LIST)
CURRENT=1
echo "===== 开始推送镜像(共 $TOTAL_IMAGES 个) ====="
# 定义推送函数
push_image() {
local src_image=$1
local retry=0
# 转换镜像名称规则:
# docker.io/library/nginx:alpine → harbor.example.com/my-project/nginx:alpine
# quay.io/coreos/kube-rbac:latest → harbor.example.com/my-project/coreos/kube-rbac:latest
local harbor_image=$(echo $src_image | sed \
-e "s|^docker.io/||" \
-e "s|^library/||" \
-e "s|^|$HARBOR_URL/$PROJECT_NAME/|")
# 显示进度
echo "[$CURRENT/$TOTAL_IMAGES] 正在推送: $src_image$harbor_image"
# 重试逻辑
while [ $retry -le $MAX_RETRY ]; do
docker tag "$src_image" "$harbor_image"
if docker push "$harbor_image" > /dev/null 2>&1; then
docker rmi "$harbor_image" # 清理临时tag
return 0
else
((retry++))
echo "推送失败(尝试 $retry/$((MAX_RETRY+1)): $harbor_image"
sleep 2
fi
done
echo "$src_image$harbor_image" >> $FAILED_LOG
return 1
}
# 并行推送控制
export -f push_image
export HARBOR_URL PROJECT_NAME MAX_RETRY FAILED_LOG CURRENT TOTAL_IMAGES
cat $TMP_IMAGE_LIST | xargs -P $CONCURRENT_PUSH -I {} bash -c 'push_image "$@"' _ {}
# 结果统计
SUCCESS_COUNT=$(($TOTAL_IMAGES - $(wc -l < $FAILED_LOG 2>/dev/null || echo 0)))
echo "===== 推送完成 ====="
echo "成功: $SUCCESS_COUNT"
echo "失败: $(wc -l < $FAILED_LOG 2>/dev/null || echo 0)"
[[ -s $FAILED_LOG ]] && echo "失败列表详见: $FAILED_LOG"
# 清理临时文件
rm $TMP_IMAGE_LIST

@ -0,0 +1,40 @@
version: "3"
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus/alert_rules.yml:/etc/prometheus/alert_rules.yml
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--web.enable-lifecycle" # 允许通过 API 重新加载配置
networks:
- monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3100:3000"
volumes:
- ./grafana/grafana.ini:/etc/grafana/grafana.ini # 可选:自定义 Grafana 配置
networks:
- monitoring
depends_on:
- prometheus
node-exporter: # 示例:部署 Node Exporter 监控本机
image: prom/node-exporter:latest
container_name: node-exporter
ports:
- "9100:9100"
networks:
- monitoring
networks:
monitoring:
driver: bridge

@ -0,0 +1,10 @@
[smtp]
enabled = true
host = smtp.qq.com:465
user = zeng32@qq.com
password = shxxxzzbavojbgeb
from_address = zeng32@qq.com
from_name = Grafana Alert
skip_verify = true # 跳过SSL证书验证仅测试环境建议开启

@ -0,0 +1,20 @@
global:
scrape_interval: 15s # 抓取间隔
evaluation_interval: 15s # 告警规则检查间隔
alerting:
alertmanagers:
- static_configs:
- targets: ["alertmanager:9093"] # 如果使用 Alertmanager需单独部署
rule_files:
- "/etc/prometheus/alert_rules.yml" # 告警规则文件路径
scrape_configs:
- job_name: "prometheus" # 监控 Prometheus 自身
static_configs:
- targets: ["localhost:9090"]
- job_name: "node-exporter" # 示例:监控服务器基础指标(需部署 Node Exporter
static_configs:
- targets: ["node-exporter:9100"] # Node Exporter 服务地址

@ -3,3 +3,7 @@
https://blog.csdn.net/weixin_46557630/article/details/127071444
https://blog.csdn.net/qq_36595568/article/details/124285925
grafana默认账号密码
admin/admin

@ -0,0 +1,2 @@
admin
-XGQY8KCl_RtKBW_lMVf

@ -0,0 +1,15 @@
version: '3.3'
services:
stirling-pdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
ports:
- '8080:8080'
volumes:
- ./StirlingPDF/trainingData:/usr/share/tessdata # Required for extra OCR languages
- ./StirlingPDF/extraConfigs:/configs
- ./StirlingPDF/customFiles:/customFiles/
- ./StirlingPDF/logs:/logs/
- ./StirlingPDF/pipeline:/pipeline/
environment:
- DOCKER_ENABLE_SECURITY=false
- LANGS=zh_CN
Loading…
Cancel
Save