diff --git a/docker_pull/images copy.txt b/docker_pull/images copy.txt new file mode 100644 index 0000000..ff6fba1 --- /dev/null +++ b/docker_pull/images copy.txt @@ -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 \ No newline at end of file diff --git a/docker_pull/images.txt b/docker_pull/images.txt new file mode 100644 index 0000000..86b302b --- /dev/null +++ b/docker_pull/images.txt @@ -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 \ No newline at end of file diff --git a/docker_pull/pull_image.sh b/docker_pull/pull_image.sh new file mode 100644 index 0000000..07862c2 --- /dev/null +++ b/docker_pull/pull_image.sh @@ -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" + + diff --git a/docker_pull/sync_harbor.sh b/docker_pull/sync_harbor.sh new file mode 100644 index 0000000..01f2134 --- /dev/null +++ b/docker_pull/sync_harbor.sh @@ -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|^|^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 \ No newline at end of file diff --git a/grafana/monitoring/docker-compose.yml b/grafana/monitoring/docker-compose.yml new file mode 100644 index 0000000..d2cd451 --- /dev/null +++ b/grafana/monitoring/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/grafana/monitoring/grafana/grafana.ini b/grafana/monitoring/grafana/grafana.ini new file mode 100644 index 0000000..09b997d --- /dev/null +++ b/grafana/monitoring/grafana/grafana.ini @@ -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证书验证(仅测试环境建议开启) + + diff --git a/grafana/monitoring/prometheus/alert_rules.yml b/grafana/monitoring/prometheus/alert_rules.yml new file mode 100644 index 0000000..e69de29 diff --git a/grafana/monitoring/prometheus/prometheus.yml b/grafana/monitoring/prometheus/prometheus.yml new file mode 100644 index 0000000..61576ae --- /dev/null +++ b/grafana/monitoring/prometheus/prometheus.yml @@ -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 服务地址 \ No newline at end of file diff --git a/grafana/readme.md b/grafana/readme.md index 068d4d1..3609f61 100644 --- a/grafana/readme.md +++ b/grafana/readme.md @@ -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 \ No newline at end of file diff --git a/rancher/readme.md b/rancher/readme.md new file mode 100644 index 0000000..7786930 --- /dev/null +++ b/rancher/readme.md @@ -0,0 +1,2 @@ +admin +-XGQY8KCl_RtKBW_lMVf diff --git a/stirling-pdf/docker-compose.yml b/stirling-pdf/docker-compose.yml new file mode 100644 index 0000000..60c26d5 --- /dev/null +++ b/stirling-pdf/docker-compose.yml @@ -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 \ No newline at end of file