openwrt加速docker镜像及各种docker容器
一键安装docker
bash <(curl -sL kejilion.sh) docker install使用方法①——替换拉取镜像地址
原拉取镜像命令
docker pull library/alpine:latest改为加速拉取镜像命令
docker pull docker.anye.in/library/alpine:latest使用方法②——配置镜像加速器(openwrt无效 需要在dockerman添加镜像)
创建或修改 /etc/docker/daemon.json 配置文件
DOCKER_MIRROR=https://hub.1panel.dev
tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["$DOCKER_MIRROR"]
}
EOF# 重启 Docker 服务
/etc/init.d/dockerd restartDocker加速镜像大全(由Anye提供)
以某关键字匹配 删掉某些镜像(hugo举例)
docker images | grep 'hugo' | awk '{print $3}' | xargs docker rmi -f获取正在运行的Docker容器的docker run命令以我的halo博客为例
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike halo分析一个镜像,以wrk为例
docker images williamyeh/wrk
docker history williamyeh/wrk
docker create --name wrk_temp williamyeh/wrk
cd /tmp/wrk/
docker export wrk_temp > wrk-fs.tar
ls
docker rm wrk_temp
mkdir -p wrk-fs
tar -x -f wrk-fs.tar -C wrk-fs
ls
du -s wrk-fs/* 2>/dev/null | sort -n
find wrk-fs -type f -name "*wrk*"
file wrk-fs/usr/local/bin/wrk 2>/dev/null || echo "使用ls -l查看文件信息"
ls -l wrk-fs/usr/local/bin/wrk
# 获取镜像的构建时间线
docker image history --no-trunc williamyeh/wrk:latestNginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器
把配置文件输出到物理机
NGINX_PATH=/data/nginx
mkdir -p $NGINX_PATH/log
docker run --rm \
--network=none \
--entrypoint=cat nginx /etc/nginx/nginx.conf > $NGINX_PATH/nginx.conf把主要文件输出到物理机
mkdir -p $NGINX_PATH/conf.d
docker run --rm \
--network=none \
--entrypoint=cat nginx /etc/nginx/conf.d/default.conf > $NGINX_PATH/conf.d/default.conf把文件拷贝到主机
# 创建一个临时容器(不启动)
docker create --name temp-nginx-container nginx:latest
# 将容器conf.d文件夹下内容复制到宿主机
docker cp temp-nginx-container:/etc/nginx/conf.d $NGINX_PATH/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp temp-nginx-container:/usr/share/nginx/html $NGINX_PATH
# 文件复制完成后,这个临时容器就没用了,可以删除它。
docker rm temp-nginx-container启动Nginx(默认端口80)
export NGINX_PORT=93 # 设置环境变量
docker run -d \
--name nginx \
-p ${NGINX_PORT}:80 \
nginx全映射的Nginx
export NGINX_PORT=93 # 设置环境变量
docker run -d \
--name nginx \
-p ${NGINX_PORT}:80 \
-v $NGINX_PATH/nginx.conf:/etc/nginx/nginx.conf \
-v $NGINX_PATH/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v $NGINX_PATH/log:/var/log/nginx \
-v $NGINX_PATH/html:/usr/share/nginx/html \
nginx:latest带有ECH模块的Nginx(仅支持amd64 x86)
生成 ECH key
openssl genpkey -out /path/to/your/docker/mount/directory/ech.key -algorithm X25519准备 nginx.conf
vim /path/to/your/docker/mount/directory/nginx.conf
user root;
events {
worker_connections 1024;
}
http {
client_max_body_size 200m;
server {
# "reuseport" and "ipv6only=off" only need to configure once
listen [::]:54321 quic reuseport ipv6only=off;
listen [::]:54321 ssl ipv6only=off;
http2 on;
http3 on;
http3_hq on;
server_name a.example.com;
proxy_buffering off;
# ech key, only need to configure once
ssl_ech a.example.com 1 key=/etc/nginx/ech.key;
ssl_certificate /etc/nginx/a.example.com.pem;
ssl_certificate_key /etc/nginx/a.example.com.key;
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
add_header Alt-Svc 'h3=":54321";h3-29=":54321"'; # Advertise that HTTP/3 is available
# HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://calibre:8083;
}
location /.well-known/origin-svcb {
add_header Content-Type application/json;
return 200 '{"enable":$ssl_ech,"endpoints":[{"ech":"$ssl_ech_config"}]}';
}
}
server {
listen [::]:54321 quic;
listen [::]:54321 ssl;
http2 on;
http3 on;
http3_hq on;
server_name b.example.com;
proxy_buffering off;
ssl_certificate /etc/nginx/b.example.com.pem;
ssl_certificate_key /etc/nginx/b.example.com.key;
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
add_header Alt-Svc 'h3=":54321";h3-29=":54321"'; # Advertise that HTTP/3 is available
# HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://calibre2:8083;
}
location /.well-known/origin-svcb {
add_header Content-Type application/json;
return 200 '{"enable":$ssl_ech,"endpoints":[{"ech":"$ssl_ech_config"}]}';
}
}
}创建带ECH的nginx的Docker容器
NGINX_ECH_PATH = /data/nginx-ech
mkdir -p $NGINX_ECH_PATH
docker run --name nginx -d \
-p 54321:54321 \
-p 54321:54321/udp \
--restart unless-stopped \
-v $NGINX_ECH_PATH:/etc/nginx \
--log-opt max-size=2m \
imhy123/nginx-ech:1.25.4-beta.2Nginx最小化版本(根据-e HTTP_PORT传递需要的端口 容器内部默认80)
docker run -d \
--name nginx \
--network host \
-e HTTP_PORT=93 \
bailangvvking/nginx重启
docker exec nginx /etc/nginx/sbin/nginx -s reload科技Lion的nginx 带Waf Br压缩 zstd压缩
NGINX_PATH=/data/nginx-waf
mkdir -p ${NGINX_PATH}
# 下载配置文件
mkdir -p ${NGINX_PATH} cd ${NGINX_PATH} \
&& mkdir -p ${NGINX_PATH}/html ${NGINX_PATH}/certs ${NGINX_PATH}/conf.d ${NGINX_PATH}/log/nginx
wget -O ${NGINX_PATH}/nginx.conf https://gh.kejilion.pro/raw.githubusercontent.com/kejilion/nginx/main/nginx10.conf
wget -O ${NGINX_PATH}/conf.d/default.conf https://gh.kejilion.pro/raw.githubusercontent.com/kejilion/nginx/main/default10.conf
wget -O ${NGINX_PATH}/html/index.html https://gh.kejilion.pro/github.com/nginx/nginx/raw/refs/heads/master/docs/html/index.html
wget -O ${NGINX_PATH}/html/50x.html https://gh.kejilion.pro/github.com/nginx/nginx/raw/refs/heads/master/docs/html/50x.html
# 开启Waf功能
sed -i 's|# load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;|load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# modsecurity on;|\1modsecurity on;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# modsecurity_rules_file /etc/nginx/modsec/modsecurity.conf;|\1modsecurity_rules_file /etc/nginx/modsec/modsecurity.conf;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
# 开启 Brotli:去掉注释
sed -i 's|# load_module /etc/nginx/modules/ngx_http_brotli_filter_module.so;|load_module /etc/nginx/modules/ngx_http_brotli_filter_module.so;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|# load_module /etc/nginx/modules/ngx_http_brotli_static_module.so;|load_module /etc/nginx/modules/ngx_http_brotli_static_module.so;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# brotli on;|\1brotli on;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# brotli_static on;|\1brotli_static on;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# brotli_comp_level \(.*\);|\1brotli_comp_level \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# brotli_buffers \(.*\);|\1brotli_buffers \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# brotli_min_length \(.*\);|\1brotli_min_length \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# brotli_window \(.*\);|\1brotli_window \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# brotli_types \(.*\);|\1brotli_types \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i '/brotli_types/,+6 s/^\(\s*\)#\s*/\1/' ${NGINX_PATH}/nginx.conf
# 开启 Zstd:去掉注释
sed -i 's|# load_module /etc/nginx/modules/ngx_http_zstd_filter_module.so;|load_module /etc/nginx/modules/ngx_http_zstd_filter_module.so;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|# load_module /etc/nginx/modules/ngx_http_zstd_static_module.so;|load_module /etc/nginx/modules/ngx_http_zstd_static_module.so;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# zstd on;|\1zstd on;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# zstd_static on;|\1zstd_static on;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# zstd_comp_level \(.*\);|\1zstd_comp_level \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# zstd_buffers \(.*\);|\1zstd_buffers \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# zstd_min_length \(.*\);|\1zstd_min_length \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i 's|^\(\s*\)# zstd_types \(.*\);|\1zstd_types \2;|' ${NGINX_PATH}/nginx.conf > /dev/null 2>&1
sed -i '/zstd_types/,+6 s/^\(\s*\)#\s*/\1/' ${NGINX_PATH}/nginx.conf
# 下载自签假证书
curl -o ${NGINX_PATH}/certs/default_server.crt https://gitee.com/white-wolf-vvvk/DK8sDDosFirewall/raw/main/cert.crt
curl -o ${NGINX_PATH}/certs/default_server.key https://gitee.com/white-wolf-vvvk/DK8sDDosFirewall/raw/main/cert.key
# 启动 Nginx 容器 注意80 443 如果不想占用的话就改下端口
docker run -d \
--name nginx-waf \
--restart always \
--network host \
-v "${NGINX_PATH}/nginx.conf:/etc/nginx/nginx.conf" \
-v "${NGINX_PATH}/conf.d:/etc/nginx/conf.d" \
-v "${NGINX_PATH}/certs:/etc/nginx/certs" \
-v "${NGINX_PATH}/html:/var/www/html" \
-v "${NGINX_PATH}/log/nginx:/var/log/nginx" \
--tmpfs /var/cache/nginx:rw,noexec,nosuid,size=2048m \
kjlion/nginx:alpineCaddy(占用端口根据配置定义)
Caddy是一款基于Go语言编写的强大且可扩展的平台,可以给你的站点、服务和应用程序提供服务。
CADDY_PATH=/data/caddy
mkdir -p $CADDY_PATH/site
mkdir -p $CADDY_PATH/caddy_data
mkdir -p $CADDY_PATH/caddy_config
export CADDY_PORT=80 # 设置环境变量
cat <<EOF > $CADDY_PATH/Caddyfile
: {
root * /usr/share/caddy
file_server
}
EOF
echo '<h1>Hello from Caddy!</h1>' > $CADDY_PATH/site/index.html
docker run -d --name caddy \
-p ${CADDY_PORT}:80 \
-v $CADDY_PATH/site:/usr/share/caddy \
-v $CADDY_PATH/Caddyfile:/etc/caddy/Caddyfile \
-v $CADDY_PATH/caddy_data:/data \
-v $CADDY_PATH/caddy_config:/config \
caddy:2Pingora(占用端口3018 80 443)
Pingora 是一个基于 Rust 的框架,用于构建快速、可靠和可编程的网络系统
PINGORA_PATH=/data/pingora
MKDIR -P $PINGORA_PATH
docker run -it -d \
--name="pingora" \
--restart=always \
-v $PINGORA_PATH:/opt/pingap \
-p 3018:3018 \
-p 80:80 \
-p 443:443 \
vicanso/pingap -c /opt/pingap/conf \
--autoreload \
[email protected]:3018这里 cGluZ2FwOjEyMzEyMw== 是 pingap:123123 的 base64 编码值,用于开启 Web 管理后端时的鉴权。端口 80 和 443 用于侦听服务,而 autoreload 用于上游和位置配置的热更新。这两种类型的配置不需要重新启动应用程序。 (用户pingap密码123123 )
HAProxy(占用端口99)
HAProxy主要是做负载均衡的7层,也可以做4层负载均衡
HAPROXY_PATH=/data/haproxy
mkdir -p "$HAPROXY_PATH"
cd "$HAPROXY_PATH"
cat >> haproxy.cfg <<EOF
global
daemon
maxconn 2048
defaults
mode http
timeout connect 5s
timeout client 30s
timeout server 30s
frontend http_front
bind *:99
default_backend http_back
backend http_back
balance roundrobin
server web1 192.168.1.100:80 check
server web2 127.0.0.1:80 check
EOFdocker run -d \
--name haproxy \
--user root \
-p 99:99 \
-v $HAPROXY_PATH/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro \
haproxy:lts-alpinePortainer(主机模式默认占用端口9000 、9443)
portainer是一个轻量级的docker容器管理面板
PORNTAINER_PATH=/data/portainer
mkdir -p $PORNTAINER_PATH
docker run -d \
--name="portainer" \
--restart=always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $PORNTAINER_PATH:/data \
6053537/portainer-ceHalo(端口8090)
Halo 是一款强大易用的开源建站工具 默认是 256M 内存 可以改成 512M 少一些 GC 消耗 CPU
HALO_PATH=/data/halo2
mkdir -p $HALO_PATH
docker run -d \
--name halo \
--restart always \
-p 8090:8090 \
-v $HALO_PATH:/root/.halo2 \
-e JVM_OPTS="-Xmx256m -Xms256m" \
registry.fit2cloud.com/halo/halo:2Halo使用系统最大内存建站
HALO_PATH=/data/halo2
mkdir -p $HALO_PATH
TOTAL_MEM_MB=$(awk '/MemTotal/ {print int($2 / 1024)}' /proc/meminfo)
MAX_MEM_MB=$((TOTAL_MEM_MB * 1))
CPU_THREADS=$(grep -c 'processor' /proc/cpuinfo)
docker run -d \
--name halo \
--restart always \
--network host \
-v $HALO_PATH:/root/.halo2 \
-e JVM_OPTS="-Xmx${MAX_MEM_MB}m -Xms${MAX_MEM_MB}m -XX:+TieredCompilation -XX:MaxInlineLevel=100 -XX:+UseJVMCICompiler -XX:CompileThreshold=1 -XX:+UseJVMCICompiler -XX:CICompilerCount=${CPU_THREADS} -XX:+AggressiveOpts -XX:ReservedCodeCacheSize=${TOTAL_MEM_MB}m -XX:+OptimizeStringConcat -XX:+UnlockExperimentalVMOptions" \
halohub/halo:2-Xmx9g -Xms9g: 为容器分配 9GB 堆内存。-XX:+TieredCompilation: 启用 分层编译 将代码分为多级,逐步编译。JVM 先快速编译热点代码,然后逐渐优化这些代码-XX:MaxInlineLevel=15:最大内联级别,控制 JIT 编译器在进行内联优化时的最大深度。内联优化会将方法调用转换为直接插入代码的方式,这有助于减少方法调用的开销-XX:+UseG1GC:使用 G1 垃圾回收器,适合大内存应用。-XX:+UseJVMCICompiler:使用 JVMCI 编译器,支持更现代、更高效的 JIT 编译器(例如 Graal)-XX:CompileThreshold=1: 将一个方法从 解释模式 转换为 编译模式 时,必须执行的最小次数。默认值通常是 1500,设置为 1000 意味着 JIT 编译器会在方法执行 1000 次后对其进行编译优化-XX:+UseJVMCICompiler: 启用 JVM CI 编译器 将 JVM 字节码转为机器代码的标准接口,支持一些更高效的编译器优化-XX:CICompilerCount=8:启用 8 个 JIT 编译线程(根据 CPU 核心数调整)。-XX:+AggressiveOpts:启用一些高级优化选项。-XX:ReservedCodeCacheSize=1g:增加 JIT 编译缓存大小为 1GB。-XX:MaxRAMPercentage=90.0:使用最大 90% 的系统内存。-XX:+OptimizeStringConcat: 启用优化字符串连接的 JIT 编译-XX:+UnlockExperimentalVMOptions: # 解锁实验性 JVM 选项(用于启用更多激进的优化选项)
使用Dockerfile部署Halo
HALO_PATH=/data/halo2
mkdir -p $HALO_PATH
mkdir -p "$HALO_PATH/application/build/libs/"
cd "$HALO_PATH/application/build/libs/"
# 获取最新版本的发布信息
RELEASE_JSON=$(curl -s https://api.github.com/repos/halo-dev/halo/releases/latest)
# 提取最新版本的 JAR 文件下载链接
# JAR_URL=$(echo $RELEASE_JSON | jq -r '.assets[] | select(.name | test("halo.*\\.jar$")) | .browser_download_url')
JAR_URL="https://gh.kejilion.pro/$(echo $RELEASE_JSON | jq -c '.assets[]' | grep '"name":"halo.*\.jar"' | jq -r '.browser_download_url')"
wget $JAR_URL
cd "$HALO_PATH"
wget -O $HALO_PATH/Dockerfile https://r2.lovelyy.eu.org/raw/backup/halo-docker/Dockerfile
#构建docke镜像
docker build -t graalvm-halo:latest .
TOTAL_MEM_MB=$(awk '/MemTotal/ {print int($2 / 1024)}' /proc/meminfo)
docker run -d \
--name halo \
--restart always \
--network host \
-v $HALO_PATH:/root/.halo2 \
-e JVM_OPTS="-Xmx${TOTAL_MEM_MB}m -Xms${TOTAL_MEM_MB}m" \
graalvm-haloUpage
UPAGE_PATH=/data/upage
mkdir -p $UPAGE_PATH/data $UPAGE_PATH/logs $UPAGE_PATH/storage
docker run -d \
--name upage \
--restart unless-stopped \
-p 3000:3000 \
-e LLM_PROVIDER=OpenAI \
-e PROVIDER_BASE_URL=your-provider-base-url \
-e PROVIDER_API_KEY=your-openai-api-key \
-e LLM_DEFAULT_MODEL=your-default-model \
-e LLM_MINOR_MODEL=your-minor-model \
-v $UPAGE_PATH/data:/app/data \
-v $UPAGE_PATH/logs:/app/logs \
-v $UPAGE_PATH/storage:/app/storage \
halohub/upage:latest参数说明如下:
-e LLM_PROVIDER=OpenAI:设置默认的 LLM 提供商为 OpenAI,同时兼容支持 OpenAI 规范的 API 接口。-e PROVIDER_BASE_URL=your-provider-base-url:设置 LLM 提供商的 API 基础 URL,部分提供商需要设置此项,例如 Ollama、LMStudio、OpenAI 提供商可选此项。例如https://api.openai.com/v1-e PROVIDER_API_KEY=your-openai-api-key:设置 LLM 提供商的 API 密钥,大部分提供商需要设置此项。-e LLM_DEFAULT_MODEL=your-default-model:设置默认的 LLM 模型,用于构建页面。-e LLM_MINOR_MODEL=your-minor-model:设置次要的 LLM 模型,用于执行其他任务。-v ./data:/app/data:挂载数据目录-v ./logs:/app/logs:挂载日志目录-v ./storage:/app/storage:挂载存储目录
访问 http://localhost:3000 即可访问 UPage 的界面
Ghost建站(默认端口2368)
GHOST_PATH=/data/ghost
mkdir -p $GHOST_PATH/content
chown -R 1000:1000 $GHOST_PATH/content
chmod -R 755 $GHOST_PATH/content
# 使用临时容器初始化数据库
echo "初始化 Ghost 数据库..."
docker run --rm \
--name ghost-init \
-v $GHOST_PATH/content:/var/lib/ghost/content \
ghost:latest \
bash -c "mkdir -p /var/lib/ghost/content/data && chown -R node:node /var/lib/ghost/content"
# 重新启动 Ghost 容器
docker run -d \
--name ghost-blog \
--restart always \
-p 2368:2368 \
-e database__client=sqlite3 \
-e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \
-e url=http://localhost:2368 \
-v $GHOST_PATH/content:/var/lib/ghost/content \
ghost:latestuptime-kuma(端口3001)
Uptime Kuma 易于使用的自托管监控工具
UPDATE_KUMA_PATH=/data/uptime-kuma-data
mkdir -p $UPDATE_KUMA_PATH
docker run -d \
--name=uptime-kuma \
-p 3001:3001 \
-v $UPDATE_KUMA_PATH:/app/data \
--restart=always \
louislam/uptime-kuma:latestkener(端口3000)
KENER_PATH=/data/kener
mkdir -p $KENER_PATH
# 生成密钥并保存到文件
KEY=$(openssl rand -base64 32)
echo $KEY
# 启动容器时引用环境变量文件
docker run -d \
--name c\
--restart always \
-e TZ=Asia/Shanghai \
-e KENER_SECRET_KEY=$KEY \
-e ORIGIN="http://你的服务器IP:3000" \
-p 3000:3000 \
-v $KENER_PATH:/config:rw \
rajnandan1/kener:latestmyip(端口18966)
是一个多功能IP工具箱,可以查看自己IP信息及连通性,用网页面板呈现
MYIP_PATH=/dat/myip
docker run -d \
--name myip \
-p 18966:18966 \
--restart always \
ghcr.io/jason5ng32/myip:latest青龙(占用端口5700)
青龙是 whyour 大佬写的一个定时任务管理平台,支持 Python3、JavaScript、Shell、Typescript(使用debian解决使用alpine不支持的依赖)
QINGLONG_PATH=/data/ql
mkdir -p $QINGLONG_PATH
docker run -dit \
--name qinglong \
-v $QINGLONG_PATH/config:/ql/config \
-v $QINGLONG_PATH/log:/ql/log \
-v $QINGLONG_PATH/db:/ql/db \
-e QlBaseUrl="/" \
-e QlPort="5700" \
-p 5700:5700 \
--hostname qinglong \
whyour/qinglong:debianOpenresty(arm64)(端口8080)
是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。. 用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关
官方
docker run -d \
--name openresty \
-p 8080:80 \
openresty/openresty:alpine(可调节配置)
一、启动一个空容器
docker create \
--name temp_openresty \
openresty/openresty:alpine二、把相关文件复制出来
OPENRESTY_PATH=/data/openresty
mkdir -p $OPENRESTY_PATH/conf.d
# openresty的默认网页文件目录
docker cp temp_openresty:/usr/local/openresty/nginx/html $OPENRESTY_PATH/
# nginx的主要文件配置
docker cp temp_openresty:/usr/local/openresty/nginx/conf/nginx.conf $OPENRESTY_PATH/nginx.conf
# openresty所有配置文件 带端口的
docker cp temp_openresty:/etc/nginx/conf.d $OPENRESTY_PATH/三、删除临时容器
docker rm temp_openresty四、修改占用端口80为8080
sed -i 's/listen\s\+80;/listen 8080;/' $OPENRESTY_PATH/conf.d/default.conf六、启动(可以按照需求修改默认占用的80端口)
docker run -d \
--name openresty \
--network host \
-v $OPENRESTY_PATH/html:/usr/local/openresty/nginx/html:ro \
-v $OPENRESTY_PATH/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf:ro \
-v $OPENRESTY_PATH/conf.d:/etc/nginx/conf.d:ro \
openresty/openresty:alpine第三方
docker run -d \
--name openresty \
--restart always \
--network host \
bitnami/openresty:latest防CC版本Openresty(占用端口80 443 可在配置文件修改)
DK8S_DIR=/data/dk8sfirewall
# GH=https://gitee.com/azhaoyang_admin/DK8sDDosFirewall/raw/main
GH=https://gitee.com/white-wolf-vvvk/DK8sDDosFirewall/raw/main
mkdir -p "$DK8S_DIR"
cd "$DK8S_DIR"
for f in cert.crt cert.key nginx.conf env.conf protect.lua record.lua stats.lua persistence.lua save_data.lua view_data.lua cdn_ips.conf; do
curl -L --retry 3 -o "$DK8S_DIR/$f" "$GH/$f"
done
docker run -d \
--name dk8sfw \
--user=root \
--network host \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
--cap-add=SYS_ADMIN \
-v "$DK8S_DIR:/app:rw" \
bailangvvking/dk8sddosfirewall:latest最小化版本的OpenResty(自建 常更新 有风险)
docker run -d \
--name openresty \
-p 93:80 \
bailangvvking/openrestyCloudflare Tunnel
Cloudflare Tunnel 是一款隧道软件,可以快速安全地加密应用程序到任何类型基础设施的流量,让您能够隐藏你的 web 服务器 IP 地址,阻止直接攻击,从而专注于提供出色的应用程序。Cloudflare Tunnel提供了一种安全的方式,让您的资源连接到Cloudflare,而无需公共可路由的IP地址
使用基于TCP的HTTP2且开启双栈网络支持
最后一行加你的token
docker run -d \
--name cftunnel \
--restart always \
--network host \
cloudflare/cloudflared:latest \
--protocol http2 \
--edge-ip-version auto \
tunnel --no-autoupdate run \
--token 你的tokenLucky(端口16601)
Lucky最初是作为一个小工具,由开发者为自己的个人使用而开发,用于替代socat 目前已经实现/集成的主要功能模块有 端口转发
动态域名(DDNS) Web服务 Stun内网穿透 网络唤醒 计划任务 ACME自动证书 网络存储
LUCKY_PATH=/data/lucky
mkdir -p $LUCKY_PATH
docker run -it -d \
--name lucky \
--network host \
--restart always \
-v $LUCKY_PATH:/goodluck \
-e "net.unraid.docker.icon=https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/Lucky/icon.png" \
-e "net.unraid.docker.webui=http://[IP]:[PORT:16601]" \
--pid=host \
--privileged=true \
gdy666/luckyAlist(端口5244)
Alist是一个支持多种存储、支持网页浏览和WebDAV的文件列表程序,由gin和Solidjs驱动。它可以帮助用户统一管理多个云盘中的文件,快速分享文件,以及实现自动化脚本和私有网盘搭建等功能。
ALIST_PATH=/data/alist
mkdir -p $ALIST_PATH
docker run -d \
--name="alist" \
--restart=unless-stopped \
-p 5244:5244 \
-v $ALIST_PATH/data:/opt/alist/data \
-e PUID=0 -e PGID=0 -e UMASK=022 \
xhofe/alist:latestCloudreve(端口5212)
Cloudreve 可以让您快速搭建起公私兼备的网盘系统。 Cloudreve 在底层支持不同的云存储平台
CLOUDREVE_PATH=/data/cloudreve
mkdir -p $CLOUDREVE_PATH
docker run -d \
-p 5212:5212 \
--mount type=bind,source=$CLOUDREVE_PATH/conf.ini,target=/cloudreve/conf.ini \
--mount type=bind,source=$CLOUDREVE_PATH/cloudreve.db,target=/cloudreve/cloudreve.db \
-v $CLOUDREVE_PATH/uploads:/cloudreve/uploads \
-v $CLOUDREVE_PATH/avatar:/cloudreve/avatar \
cloudreve/cloudreve:latestddns-go(端口9876)
DDNS_GO_PATH=/data/ddns-go
mkdir -p $DDNS_GO_PATH
docker run -d \
--name ddns-go \
--restart=always \
-p 9876:9876 \
-v $DDNS_GO_PATH:/root \
jeessy/ddns-gofail2ban
Fail2Ban 是一款入侵防御软件,可以保护服务器免受暴力攻击
FAIL2BAN_PATH=/data/fail2ban
mkdir -p $FAIL2BAN_PATH
docker run -d \
--name=fail2ban \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
--network=host \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e VERBOSITY=-vv \
-v $FAIL2BAN_PATH/config:/config \
-v $FAIL2BAN_PATH/log:/var/log:ro \
-v $FAIL2BAN_PATH/airsonic/log:/remotelogs/airsonic:ro \
-v $FAIL2BAN_PATH/apache2/log:/remotelogs/apache2:ro \
-v $FAIL2BAN_PATH/authelia/log:/remotelogs/authelia:ro \
-v $FAIL2BAN_PATH/emby/log:/remotelogs/emby:ro \
-v $FAIL2BAN_PATH/filebrowser/log:/remotelogs/filebrowser:ro \
-v $FAIL2BAN_PATH/homeassistant/log:/remotelogs/homeassistant:ro \
-v $FAIL2BAN_PATH/lighttpd/log:/remotelogs/lighttpd:ro \
-v $FAIL2BAN_PATH/nextcloud/log:/remotelogs/nextcloud:ro \
-v $FAIL2BAN_PATH/nginx/log:/remotelogs/nginx:ro \
-v $FAIL2BAN_PATH/nzbget/log:/remotelogs/nzbget:ro \
-v $FAIL2BAN_PATH/overseerr/log:/remotelogs/overseerr:ro \
-v $FAIL2BAN_PATH/prowlarr/log:/remotelogs/prowlarr:ro \
-v $FAIL2BAN_PATH/radarr/log:/remotelogs/radarr:ro \
-v $FAIL2BAN_PATH/sabnzbd/log:/remotelogs/sabnzbd:ro \
-v $FAIL2BAN_PATH/sonarr/log:/remotelogs/sonarr:ro \
-v $FAIL2BAN_PATH/unificontroller/log:/remotelogs/unificontroller:ro \
-v $FAIL2BAN_PATH/vaultwarden/log:/remotelogs/vaultwarden:ro \
--restart unless-stopped \
lscr.io/linuxserver/fail2ban:latestfilebrowser(端口8989)
FILEBROWSER_PATH=/data/filebrowser
mkdir -p $FILEBROWSER_PATH
docker run \
--name filebrowser \
--hostname filebrowser \
-v $FILEBROWSER_PATH/file:/srv \
-v $FILEBROWSER_PATH/filebrowser.db:/database.db \
-v $FILEBROWSER_PATH/.filebrowser.json:/.filebrowser.json \
-p 8989:8989 \
filebrowser/filebrowseNginx Proxy Manager
一款可视化的反向代理工具,以实现外网访问NAS和部署的服务
NGINX_PROXY_MANAGER_PATH=/data/npm
mkdir -p $NGINX_PROXY_MANAGER_PATH/letsencrypt
docker run -d \
--name npm \
--restart unless-stopped \
-p 90:80 \
-p 91:81 \
-p 943:443 \
-v $NGINX_PROXY_MANAGER_PATH:/data \
-v $NGINX_PROXY_MANAGER_PATH/letsencrypt:/etc/letsencrypt \
chishin/nginx-proxy-manager-zhSpeedtest
Speedtest-x 测速面板是一个 VPS 网速测试工具,多项测试功能,还可以实时监控 VPS 进出站流量
默认端口是 80 -e WEBPORT 可以指定端口
SPEEDTEST_X_PATH=/data/speedtest-x
mkdir -p $SPEEDTEST_X_PATH
docker run -d \
--name speedtest-x \
-e WEBPORT=12345 \
-p 12345:80 \
--restart always \
-e MAX_LOG_COUNT=1000 \
-e IP_SERVICE=ip.sb \
-e SAME_IP_MULTI_LOGS=true \
-v $SPEEDTEST_X_PATH:/app/data \
stilleshan/speedtest-x其他测速dcoker容器
docker run -d \
--name looking-glass \
--restart always \
-p 89:80 \
wikihostinc/looking-glass-serverWordPress+Mariadb
WORDPRESS_PATH=/data/wordpress
WORDPRESS_MYSQL_PATH=/data/mysql
mkdir -p $WORDPRESS_PATH
mkdir -p $WORDPRESS_MYSQL_PATH/data
mkdir -p $WORDPRESS_MYSQL_PATH/conf
mkdir -p $WORDPRESS_MYSQL_PATH/logs
docker run -it \
--name wordpress \
-p 9999:80 \
-v $WORDPRESS_PATH:/var/www/html \
-d wordpress
docker run -d \
--name mysql \
-v $WORDPRESS_MYSQL_PATH/data:/var/lib/mysql \
-v $WORDPRESS_MYSQL_PATH/conf:/etc/mysql/conf.d \
-v $WORDPRESS_MYSQL_PATH/logs:/var/log/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8NasCab(占用端口80、90)
Nas-Cab是一款个人NAS平台,可以帮助用户构建自己的文件共享和数据存储解决方案。无需专用设备,个人版永久免费,支持多个操作系统和设备
NASCAB_PATH=/data/nascab
mkdir -p $NASCAB_PATH/mydata
mkdir -p $NASCAB_PATH/data
docker run -d \
--name nascab \
--restart always \
-v $NASCAB_PATH/mydata:/myData \
-v $NASCAB_PATH/data:/root/.local/share/nascab \
-p 8760:80
-p 5620:90 \
ypptec/nascabHugo(端口1313) 官方镜像 ghcr.io/gohugoio/hugo
Hugo 是一个用 Go 编写的静态 HTML 和 CSS 网站生成器,号称是世界上最快的网站构建框架
1.创建项目目录并挂载到容器 强制指定 Hugo 将站点生成到挂载的 /arc目录 创建一个新的 Hugo 站点(GitHub.io镜像)
HUGO_PATH=/data/hugo
mkdir -p $HUGO_PATH/site
cd $HUGO_PATH/site
chmod 777 $HUGO_PATH/site
docker run --rm -it \
-v $HUGO_PATH/site:/src \
-w /src \
bailangvvking/hugo \
new site .2.下载主题 需要宿主机安装了git
HUGO_PATH=/data/hugo
# 主题
cd $HUGO_PATH/site
git init
git submodule add --depth 1 https://gh-proxy.org/https://github.com/adityatelange/hugo-PaperMod themes/PaperMod
# echo 'theme = "PaperMod"' >> hugo.toml3.下载配置模板
HUGO_PATH=/data/hugo
mv $HUGO_PATH/site/hugo.toml $HUGO_PATH/site/hugo.toml.bak
wget -O $HUGO_PATH/site/hugo.yaml "https://r2.lovelyy.eu.org/raw/docker/hugo/PaperMod/hugo.yaml"
mkdir -p $HUGO_PATH/site/content/categories
cat > $HUGO_PATH/site/content/categories/_index.md <<EOF
---
title: 分类
layout: categories
---
EOF
mkdir -p $HUGO_PATH/site/content/tags
cat > $HUGO_PATH/site/content/tags/_index.md <<EOF
---
title: 标签
layout: tags
---
EOF
cat > $HUGO_PATH/site/content/archives.md <<EOF
---
title: 归档
layout: archives
---
EOF
cat > $HUGO_PATH/site/content/search.md <<EOF
---
title: "搜索"
layout: "search"
---
EOF
cat > $HUGO_PATH/site/archetypes/default.md <<EOF
---
title: {{ replace .File.ContentBaseName "-" " " | title }}
published: {{ .Date }}
summary: "文章简介"
cover:
image: "文章封面图。也支持HTTPS"
tags: [标签1, 标签2]
categories: '文章所处的分类'
draft: false
lang: ''
---
EOF4:新建某篇文章(以hello.md举例)
HUGO_PATH=/data/hugo
docker run --rm -it \
-v $HUGO_PATH/site:/src \
-w /src \
bailangvvking/hugo \
new content/posts/hello.md5.启动 Hugo 服务器(主机网络模式 监听V4 V6 端口以1313举例)可以添加-d后台运行
--renderToMemory --templateMetrics --bind=0.0.0.0 --bind :: --port 1313 --buildDrafts --noBuildLock --watch
# (运行) 预览开发时临时!本地!调试的(一定要改最后的网址) --buildDrafts关闭草稿模式 注意要改成访问域名
HUGO_PATH=/data/hugo
docker run -it -d \
--name hugo \
-v $HUGO_PATH/site:/src \
-w /src \
--network=host \
--restart always \
bailangvvking/hugo \
server --bind=0.0.0.0 --bind=:: --port=1313 \
--renderToMemory --templateMetrics --buildDrafts --noBuildLock --watch \
--baseURL=http://你的网站:端口/Tips:
(构建站点)写入文件(默认 server运行的是内存版本 没有写入到文件中)
HUGO_PATH=/data/hugo
docker run --rm -it -d \
--name hugo \
-v $HUGO_PATH/site:/src \
-w /src \
--network=host \
bailangvvking/hugo \
--bind=0.0.0.0 --bind=:: \
--port=1313 \
--buildDrafts \
--baseURL=http://ipv6.lovelyy.eu.org:1313/# 创建首页
HUGO_PATH=/data/hugo
docker run --rm -it \
-v $HUGO_PATH/site:/src \
-w /src \
bailangvvking/hugo \
new content/_index.md# 在主机上查看 Hugo 自动构建的页面 URL 以及可以访问的网址
HUGO_PATH=/data/hugo
docker run --rm -it \
-v $HUGO_PATH/site:/src \
-w /src \
bailangvvking/hugo \
list all1. hugo 命令
用于生成静态网站。
hugo [options]常用参数
2. hugo server 命令
用于本地开发,开启 Hugo 内置服务器。
hugo server [options]常用参数
Sonic(默认端口8080)
SONIC_DIR=/data/sonic
# 创建目录
mkdir -p $SONIC_DIR
docker run -d \
--name sonic \
--network host \
-e LOGGING_LEVEL_APP=warn \
-e SQLITE3_ENABLE=true \
-v $SONIC_DIR:/sonic \
gosonic/sonic:latestSONIC_DIR=/data/sonic
# 创建目录
mkdir -p $SONIC_DIR
docker run -d \
--name sonic \
--network host \
-v $SONIC_DIR:/sonic \
-e SERVER_HOST="0.0.0.0" \
-e SERVER_PORT=8080 \
-e LOGGING_FILENAME="sonic.log" \
-e LOGGING_LEVEL_APP="info" \
-e LOGGING_LEVEL_GORM="warn" \
-e LOGGING_MAXSIZE=10 \
-e LOGGING_MAXAGE=30 \
-e LOGGING_COMPRESS=false \
-e SQLITE3_ENABLE=true \
-e SONIC_MODE="production" \
-e SONIC_WORK_DIR="/sonic" \
-e SONIC_LOG_DIR="/sonic/logs" \
-e SONIC_ADMIN_URL_PATH="admin" \
bailangvvking/sonic:latestWebTop远程桌面
webtop基于 Alpine、Ubuntu、Fedora 和 Arch 的容器,包含官方支持的完整桌面环境,可通过任何现代 Web 浏览器访问
Ubuntu
docker run -d \
--name=webtop-ubuntu \
--restart unless-stopped \
--security-opt seccomp=unconfined \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e SUBFOLDER=/ \
-e TITLE=Webtop \
-p 3006:3000 \
-v /data/docker/webtop-ubuntu/data:/config \
-v /var/run/docker.sock:/var/run/docker.sock \
--shm-size="1gb" \
lscr.io/linuxserver/webtop:ubuntu-kdeAlpine
docker run -d \
--name=webtop \
--restart unless-stopped \
--security-opt seccomp=unconfined \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e SUBFOLDER=/ \
-e TITLE=Webtop \
-e LC_ALL=zh_CN.UTF-8 \
-e DOCKER_MODS=linuxserver/mods:universal-package-install \
-e INSTALL_PACKAGES=font-noto-cjk \
-p 3083:3000 \
-v /data/docker/webtop/data:/config \
-v /var/run/docker.sock:/var/run/docker.sock \
--shm-size="1gb" \
lscr.io/linuxserver/webtop:latest修改更多镜像系统
lscr.io/linuxserver/webtop:latestlscr.io/linuxserver/webtop:ubuntu-xfcelscr.io/linuxserver/webtop:fedora-xfcelscr.io/linuxserver/webtop:arch-xfcelscr.io/linuxserver/webtop:debian-xfce3X-ui(端口2053)
物理安装
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
mkdir -p /data/3x-ui/db /data/3x-ui/cert
curl -o /data/3x-ui/cert/default_server.crt https://gitee.com/white-wolf-vvvk/DK8sDDosFirewall/raw/main/cert.crt
curl -o /data/3x-ui/cert/default_server.key https://gitee.com/white-wolf-vvvk/DK8sDDosFirewall/raw/main/cert.key
docker run -itd \
--name 3x-ui \
--network=host \
--restart=always \
-e XRAY_VMESS_AEAD_FORCED=false \
-v /data/3x-ui/db:/etc/x-ui/ \
-v /data/3x-ui/cert:/etc/x-ui/cert/ \
bigbugcc/3x-ui:latestAnyTls(占用端口9443)
docker run -d \
--name anytls-server \
--restart always \
--network host \
-e TZ=Asia/Shanghai \
-e PORT=9443 \
jonnyan404/anytls-e MIMA=XXXX 可以自定义密码
-s 服务器域名或 IP: 端口
查看信息
docker logs anytls-serverHy2
docker run -d \
--name hy2 \
--net=host \
--cap-add=NET_ADMIN \
--restart=always \
hsqbh/hy2
docker exec hy2 wget -P /etc/hysteria -O config.yaml https://r2.lovelyy.eu.org/raw/backup/hysteria2/config.yaml
docker restart hy2
# 端口跳跃
# # iptables添加端口转发规则
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 30000:60000 -j REDIRECT --to-ports 12580
# 作废转发
# iptables -t nat -D PREROUTING -i eth0 -p udp --dport 30000:60000 -j REDIRECT --to-ports 12580passwd : qwe123!@#
- 查看配置文件 : docker exec -it hy2 sh | cat 1.yaml
H UI(Panel Port: 8081 SSH local forwarded port: 8082)
HUI_PATH=/data/h-ui
docker run -d \
--name h-ui \
--restart always \
--network=host \
--cap-add=NET_ADMIN \
-e TZ=Asia/Shanghai \
-v $HUI_PATH/bin:/h-ui/bin \
-v $HUI_PATH/data:/h-ui/data \
-v $HUI_PATH/export:/h-ui/export \
-v $HUI_PATH/logs:/h-ui/logs \
-v $HUI_PATH/cert:/h-ui/cert \
jonssonyan/h-ui \
./h-ui -p 8081Warp(端口1080)
docker run -d \
--name warp \
--restart always \
-p 1080:1080 \
-e WARP_SLEEP=2 \
--cap-add=NET_ADMIN \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
--sysctl net.ipv4.conf.all.src_valid_mark=1 \
-v /data:/var/lib/cloudflare-warp \
caomingjun/warp主机模式
docker run -d \
--name warp \
--restart always \
--network host \
-e WARP_SLEEP=2 \
--cap-add=NET_ADMIN \
-v /data:/var/lib/cloudflare-warp \
caomingjun/warp带 WARP 的 Xray
docker run -d \
--name warp-xray \
--network host \
--restart always \
misakaben/warp-plus-xray测试warp(如果输出中包含 warp=on 或者 warp=plus ,容器已经正常工作。如果输出中包含 warp=off ,则说明容器未能连接到 WARP 服务。
curl --socks5 127.0.0.1:1080 https://cloudflare.com/cdn-cgi/traceMineCraft Folia服务器(端口占用25565)
docker run -it -d \
--name folia \
--network host \
-v /data/folia:/folia \
-e MAX_RAM=100G \
-e MINECRAFT_EULA=true \
--restart=always \
endkind/folia:latest改MineCraft Folia服务器(端口占用25565) 支持传递ONLINE_MODE
docker run -it -d \
--name folia \
--network host \
-v /data/folia:/folia \
-e MAX_RAM=100G \
-e MINECRAFT_EULA=true \
-e ONLINE_MODE="false" \
--restart=always \
bailangvvking/folia:latestNPS内内网穿透服务端(面板端口8081通信端口8024)
docker run -d \
--name nps \
--restart=always \
--network=host \
-v /data/nps/conf:/conf \
duan2001/npsNPC内内网穿透客户端
docker run -d \
--name npc \
--restart=always \
--network=host duan2001/npc \
-server=xxxx:123 -vkey=xxxx,xxxx -tls_enable=false -log=offGolang(允许网络访问权限)
docker run --rm -it \
-v /data/go:/go/src/app \
-w /go/src/app \
--network host \
golangHFish(占用端口TCP/4433和TCP/4434)
HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的能力。
docker run -itd --name hfish \
-v /data/hfish:/usr/share/hfish \
--network host \
--privileged=true \
threatbook/hfish-server:latestRustDesk
TCP(21115, 21116, 21117, 21118, 21119)
UDP(21116)
服务端(占用端口21115 21116 21116/udp 21118)
mkdir -p /data/rustdesk/hbbs
docker run -td \
--name hbbs \
-p 21115:21115 \
-p 21116:21116 \
-p 21116:21116/udp \
-p 21118:21118 \
-v /data/rustdesk/hbbs:/root \
rustdesk/rustdesk-server \
hbbs -r [你的地址(IP/域名)]:21116 中继端(占用端口 21117 21119)
mkdir -p /data/rustdesk/hbbr
docker run -td \
--name hbbr \
-p 21117:21117 \
-p 21119:21119 \
-v /data/rustdesk/hbbr:/root \
rustdesk/rustdesk-server hbbr读取服务端公钥(仅限第一次启动)
docker logs hbbs | grep Key:Drawio(占用端口8080)
drawio免费的在线图表软件
docker run -d \
--name drawio \
--restart=always \
-p 8080:8080 \
-v /data/drawio:/var/lib/drawio \
jgraph/drawio哪吒探针监控[服务端](占用端口3000)
docker run -d \
--name nezha-dash \
--restart always \
-p 3000:3000 \
-v "data/nezha-dash/.env:/app/.env" \
hamster1963/nezha-dash:latesteBPFdev(占用端口8070)
docker run -ti --rm
-p 8070:80 \
--cap-add CAP_SYS_ADMIN
--pid=host \
-e BPF_DIR=/sys/fs/bpf \
-v /sys/fs/bpf:/sys/fs/bpf \
ghcr.io/ebpfdev/explorer:v0.0.7Cap(占用端口3000)
docker run -d \
--name cap-standalone \
-p 3000:3000 \
-v /data/cap-data:/usr/src/app/.data \
-e ADMIN_KEY=12bdd02bbce08b97313710fc55a5eb451d98039eb67bded7d94bb7d4ede5 \
--user root \
tiago2/cap:latestwrk压测(X86) 官方镜像 williamyeh/wrk
docker run --rm \
--name wrk \
--network host \
--cpuset-cpus="0" \
bailangvvking/wrk \
-H "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" \
-t1 -c100 -d10s http://127.0.0.1:80wrk发送随机ip请求(X86)
# 下载随机ip的Lua 可选
curl -L -o wrk.lua https://gitee.com/white-wolf-vvvk/DK8sDDosFirewall/raw/main/wrk.lua
docker run --rm \
--name wrk \
--user root \
--network host \
--cpuset-cpus="0" \
-v "$PWD/wrk.lua":/scripts/wrk.lua \
bailangvvking/wrk \
-t1 -c100 -d10s -s /scripts/wrk.lua http://127.0.0.1:80wrk2压测(1 个线程、100个并发连接、全局限制1000 req/s、持续 30s)
docker run --rm \
--name wrk2 \
--network host \
--cpuset-cpus="0" \
haydenjeune/wrk2 \
-t1 -c100 -R1000 -d10s http://127.0.0.1:80wrk2随机ip请求
# 下载随机ip的Lua 可选
curl -L -o wrk.lua https://gitee.com/white-wolf-vvvk/DK8sDDosFirewall/raw/main/wrk.lua
docker run --rm \
--name wrk \
--user root \
--network host \
--cpuset-cpus="0" \
-v "$PWD/wrk.lua":/scripts/wrk.lua \
haydenjeune/wrk2 \
-H "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" \
-t1 -c100 -R100000 -d10s http://127.0.0.1:80 -s /scripts/wrk.lua http://127.0.0.1:80Go-wrk
docker run --rm \
--name go-wrk \
--network host \
--cpuset-cpus="0" \
bailangvvking/go-wrk \
-c 10 -d 10 http://127.0.0.1:80Bombardier压测工具(运行10000次)
docker run --rm \
--cpuset-cpus="0" \
--network host \
alpine/bombardier:latest \
-c 50 -n 10000 -k https://127.0.0.1:443穿透工具Natter
#!/bin/bash
# 设置时区变量
TZ="Asia/Shanghai"
# 启动 nginx 容器
docker run -d \
--name nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-e TZ=$TZ \
-p 18888:80 \
--restart always \
nginx
# 等待 nginx 启动完成(可选,确保 natter 依赖 nginx)
sleep 1
# 启动 natter-nginx 容器(使用 host 网络模式,不能与 -p 同时使用)
docker run -d \
--name natter-nginx \
--network host \
-e TZ=Asia/Shanghai \
--restart always \
nattertool/natter -p 18888Hexo(占用端口4000)
Hexo 是一个由Node.js驱动的博客框架,支持 Markdown、一键部署、插件和多种模板引擎。Hexo 可以让你轻松创建、管理和部署你的个人或团队博客
初始化 Hexo(首次执行)
mkdir -p /data/hexo/site
cd /data/hexo/site
docker run --rm -it \
--user=root \
-v /data/hexo/site:/home/hexo/.hexo \
taskbjorn/hexo:main hexo init2. 启动 Hexo 本地服务器(开发预览)
docker run --rm -it -d \
--name hexo \
--user=root \
-v /data/hexo/site:/home/hexo/.hexo \
--network host \
taskbjorn/hexo:main hexo server3. 构建静态文件(生成 HTML)(可选)
docker run --rm -it \
-v /data/hexo/site:/home/hexo/.hexo \
taskbjorn/hexo:main hexo generate新建文章
docker run --rm -it \
-v /data/hexo/site:/home/hexo/.hexo \
taskbjorn/hexo:main hexo new "my-post"K3S
主(Master 占用端口6443)
mkdir -p /data/k3s/config
cat > /data/k3s/config/registries.yaml << EOF
mirrors:
docker.io: # Docker Hub 加速
endpoint:
- "https://docker.mirrors.ustc.edu.cn" # 中科大
- "https://docker.m.daocloud.io" # DaoCloud
k8s.gcr.io: # K8s 官方镜像加速(K3s 组件依赖)
endpoint:
- "https://k8s-mirror.aliyuncs.com"
quay.io: # Quay 镜像加速(部分 K3s 组件用)
endpoint:
- "https://quay.m.daocloud.io"
EOF
docker run -d \
--name k3s-server \
--privileged \
--network=host \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
-v /var/run:/var/run \
-v /data/k3s:/data/k3s \
-v /data/k3s/config/registries.yaml:/etc/rancher/k3s/registries.yaml \
--tmpfs /run \
--tmpfs /run/lock \
rancher/k3s server \
--https-listen-port 6443 \
--token "${你的token}" \
--kube-apiserver-arg=service-node-port-range=1-65535获取Token
docker exec k3s-server cat /var/lib/rancher/k3s/server/node-token获取节点
docker exec k3s-server kubectl get nodes -o wide从(agent)
mkdir -p /data/k3s/config
cat > /data/k3s/config/registries.yaml << EOF
mirrors:
docker.io: # Docker Hub 加速
endpoint:
- "https://docker.mirrors.ustc.edu.cn" # 中科大
- "https://docker.m.daocloud.io" # DaoCloud
k8s.gcr.io: # K8s 官方镜像加速(K3s 组件依赖)
endpoint:
- "https://k8s-mirror.aliyuncs.com"
quay.io: # Quay 镜像加速(部分 K3s 组件用)
endpoint:
- "https://quay.m.daocloud.io"
EOF
docker run -d \
--name k3s-agent \
--privileged \
-e K3S_URL=https://yyy.520613.xyz:9000 \
-e K3S_TOKEN=2003021620030216Aa+ \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
-v /var/run:/var/run \
-v /data/k3s/config/registries.yaml:/etc/rancher/k3s/registries.yaml \
--tmpfs /run --tmpfs /run/lock \
rancher/k3s agent \
--node-name=你的集群自定义名称Gemini-Balance(占用端口8000)
mkdir -p /data/gemin && cd /data/gemin
cat << EOF > .env
API_KEYS=["AIzaSyCNqQcHYVQrJ68BQtGit0Qi2kRQvD16YXQ","AIzaSyBTNiq1oL3WI0dHVJ1uPQY-VvVbwhKyJUY","AIzaSyAQDny7fVk863ln4a9n_RB0rHXHltIWnaU","AIzaSyCN8bkQEv-HT7jT_-pYnPjXoQP5bC9_dqE","AIzaSyBBK9nXzI7j6knl0GaxpYZ4hXyZbDVg8V8","AIzaSyAxU9thzVF2MgnzGudJMSRwnmoIKMjVQj8","AIzaSyCG3b8L7n2RSMRCVdwQtKP5oMnQNX83YLM","AIzaSyDBDKgIkOPoWRV41gGovIrGseeQFKRUgis","AIzaSyCSYgwog5AV72QotZ44H0aepePVqh0lrtA","AIzaSyDcml1coOWXBhsPLhtnBuSTUwGhs-fR330","AIzaSyDM01efag1vnTZ0lBOSmP3CKske7RK4C9I"]
ALLOWED_TOKENS=["你的Token"]
DATABASE_TYPE=sqlite
SQLITE_DATABASE=default_db
EOF
docker run -d \
--name gemin \
--network host \
--env-file .env \
-v /data/gemin:/app/data \
ghcr.io/snailyp/gemini-balance:latestGpt-Load(占用端口3001)
DASH_TOKENS=你的Token
docker run -d \
--name gpt-load \
--network host \
-e AUTH_KEY=$DASH_TOKENS \
-e PORT=3001 \
-e HOST=0.0.0.0 \
-e TZ=Asia/Shanghai \
-e MAX_CONCURRENT_REQUESTS=100 \
-v "/data/gpt-load":/app/data \
ghcr.io/tbphp/gpt-load:latest
# 使用 sk-123456 登录管理界面:http://localhost:3001Socks5(占用端口1080)
USERNAME=myuser
PASSWORD=myuser
docker run -itd \
--name socks5 \
--restart always \
--network host \
-e PROXY_USER=$USERNAME \
-e PROXY_PASSWORD=$PASSWORD \
-e PROXY_SERVER=0.0.0.0:1080 xkuma/socks5dst-admin-go(面板占用端口TCP 8082)
默认配置如下
# steamcmd
/root/steamcmd
# dst-dedicated-server
/root/dst-dedicated-server
# 备份
/root/.klei/DoNotStarveTogether/backup
# mod 下载路径
/root/.klei/DoNotStarveTogether/download_mod
容器存档启动路径
/root/.klei/DoNotStarveTogether
容器存档备份路径
/app/backup
容器存档模组路径
/app/mod
容器玩家日志路径
/app/dst-db
容器服务日志路径
/app/dst-admin-go.log
容器启动饥荒路径
/app/dst-dedicated-server
容器启steamcmd
/app/steamcmd
mkdir -p /data/dst/steamcmd /data/dst/server /data/dst/dstsave/backup /data/dst/dstsave/backup /data/dst/mods /data/dst/db /data/dst/log
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz -P /data/dst/steamcmd
tar -zxvf /data/dst/steamcmd/steamcmd_linux.tar.gz -C /data/dst/steamcmd
docker run -d \
--name dst \
--network host \
--dns 223.5.5.5 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/dst/steamcmd:/app/steamcmd \
-v /data/dst/server:/app/dst-dedicated-server \
-v /data/dst/dstsave/backup:/app/backup \
-v /data/dst/dstsave:/root/.klei/DoNotStarveTogether \
-v /data/dst/mods:/app/mod \
-v /data/dst/db:/app/dst-db \
-v /data/dst/log:/app/dst-admin-go.log \
hujinbo23/dst-admin-go:1.5.2mkdir -p /data/dstsave
cd /data/dstsave
docker run -d \
--name dst \
--network host \
-v /etc/localtime:/etc/localtime:ro \
-v ${PWD}/dstsave:/root/.klei/DoNotStarveTogether \
-v ${PWD}/dstsave/back:/app/backup \
-v ${PWD}/steamcmd:/app/steamcmd \
-v ${PWD}/dst-dedicated-server:/app/dst-dedicated-server \
-v ${PWD}/dstsave/dst-db:/app/dst-db \
-v ${PWD}/dstsave/password.txt:/app/password.txt \
-v ${PWD}/dstsace/first:/app/first \
hujinbo23/dst-admin-go:1.3.0Lobe chat 适配 free-api 全系列
docker run -d \
--name lobe-chat \
-p 3210:3210 \
-e DEBUG=prod \
-e OPENAI_API_KEY=密钥 \
-e OPENAI_PROXY_URL=接口地址 \
-e ACCESS_CODE=使用密码 \
yangclivia/lobe-chat:latest豆包 AI Free 服务(占用端口8000)
docker run -it -d --init \
--name doubao \
-p 8001:8000 \
-e TZ=Asia/Shanghai \
vinlic/doubao-free-api:latest阿里云 AI Free服务(占用端口8000)
docker run -it -d --init \
--name qwen \
-p 8000:8000 \
-e TZ=Asia/Shanghai \
vinlic/qwen-free-api:latestKimi-free-api
可用模型(kimi-k2-0905-preview,kimi-k2-0711-preview 和 kimi-k2-turbo-preview)
docker run -it -d \
--name kimi-free-api \
--init \
-p 8002:8000 \
-e TZ=Asia/Shanghai \
vinlic/kimi-free-api:latestQwen2API(可选-e REDIS_URL)
可用模型(qwen-max-latest qwen-max-latest-thinking qwen3-max-2025-10-30)
QWEN2_PATH=/data/qwen
docker run -d \
--name qwen2api \
-p 3000:3000 \
-e LISTEN_ADDRESS=0.0.0.0 \
-e SERVICE_PORT=3000 \
-e API_KEY=sk-admin123,sk-user456,sk-user789 \
-e DATA_SAVE_MODE=none \
-e CACHE_MODE=file \
-e ACCOUNTS= \
-v $QWEN2_PATH/caches:/app/caches \
rfym21/qwen2api:latest官方的
QWEN2_PATH=/data/qwen
docker run -d \
--name qwen2api \
-p 3000:3000 \
-e API_KEY=sk-admin123,sk-user456,sk-user789 \
-e DATA_SAVE_MODE=none \
-e CACHE_MODE=file \
-e ACCOUNTS= \
-v $QWEN2_PATH/caches:/app/caches \
rfym21/qwen2api:latestEdgeOne自动化上传证书并部署
docker run -d \
--name qcloud-ssl-cdn \
--restart=unless-stopped \
-e CF_TOKEN=xxx \
-e ACME_DNS_TYPE=dns_cf \
-e ACME_DOMAIN=520613.xyz \
-e SECRETID=xxx \
-e SECRETKEY=xxx \
-e CDN_DOMAIN=blog.520613.xyz \
-e RUN_NOW=true \
ghcr.io/zfb132/qcloud-ssl-cdn:mainGo实现的实时消息(占用端口8080)
mkdir -p /data/realtime/data /data/realtime/app /data/realtime/static
docker run -d \
--name realtime \
--network host \
-v /data/realtime/data:/data \
-v /data/realtime/static:/static \
--restart unless-stopped \
kjlion/realtime-msgboard:latestGo实现的bbs论坛(占用端口8082 3000)
mkdir -p /data/bbs-go
docker volume create bbs-go-data
docker run \
--name bbs-go \
--network=host \
-v bbs-go-data:/app/bbs-go/data \
mlogclub/bbs-go:4.0.3N8n(占用端口5678)
N8N_PATH=/data/n8n
LATEST_VERSION=$(curl -s "https://api.github.com/repos/other-blowsnow/n8n-i18n-chinese/releases/latest" | awk -F'"' '/browser_download_url/{print $4}' | head -1)
# 1. 创建解压目标目录
mkdir -p $N8N_PATH/node $N8N_PATH/dist
# 2. 下载中文汉化 UI 文件
wget https://gh.kejilion.pro/$LATEST_VERSION
# 3. 将下载的文件解压到指定目录
tar -xzf editor-ui.tar.gz -C $N8N_PATH/
# (可选)删除下载的压缩包,如果不再需要
rm editor-ui.tar.gz
docker run -it -d \
--name n8n \
--network host \
--user=root \
-e GENERIC_TIMEZONE="Asia/Shanghai" \
-e TZ="Asia/Shanghai" \
-e N8N_DEFAULT_LOCALE=zh-CN \
-v $N8N_PATH/node:/home/node/.n8n \
-e N8N_SECURE_COOKIE=false \
-v $N8N_PATH/dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist \
n8nio/n8n微信Bot
docker run -d \
--name chatgpt-on-wechat \
--security-opt seccomp:unconfined \
-e CHANNEL_TYPE='web' \
-e OPEN_AI_API_KEY='YOUR API KEY' \
-e MODEL='' \
-e PROXY='' \
-e SINGLE_CHAT_PREFIX='["bot", "@bot"]' \
-e SINGLE_CHAT_REPLY_PREFIX='"[bot] "' \
-e GROUP_CHAT_PREFIX='["@bot"]' \
-e GROUP_NAME_WHITE_LIST='["ChatGPT测试群", "ChatGPT测试群2"]' \
-e IMAGE_CREATE_PREFIX='["画", "看", "找"]' \
-e CONVERSATION_MAX_TOKENS=1000 \
-e SPEECH_RECOGNITION='False' \
-e CHARACTER_DESC='你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。' \
-e EXPIRES_IN_SECONDS=3600 \
-e USE_GLOBAL_PLUGIN_CONFIG='True' \
-e USE_LINKAI='False' \
-e LINKAI_API_KEY='' \
-e LINKAI_APP_CODE='' \
zhayujie/chatgpt-on-wechatDeepSeek2api
(模型可选 deepseek-chat deepseek-reasoner deepseek-chat-search deepseek-reasoner-search )
mkdir -p /data/deepseek2api
tee /data/deepseek2api/config.json <<EOF
{
"keys": [
"key1",
"key2"
],
"accounts": [
{
"email": "[email protected]",
"password": "password1",
"token": ""
},
{
"mobile": "12345678901",
"password": "password2",
"token": ""
}
]
}
EOF
docker run -d \
--name deepseek2api \
-p 5001:5001 \
-v "/data/deepseek2api/config.json:/app/config.json" \
ghcr.io/iidamie/deepseek2api:latestChatGpt2-api
docker run -d \
--name chat2api \
-p 5005:5005 \
-v /data/chatgpt:/app/data \
-e TZ=Asia/Shanghai \
-e AUTHORIZATION=sk-xxx \
lanqian528/chat2api
docker run -d \
--name chat-share \
-p 5100:5100 \
-e SECRET_KEY=your_admin_secret_key \
-e AUTHORIZATION=sk-xxx \
-e DOMAIN_CHATGPT=http://127.0.0.1:5005 \
ghcr.io/h88782481/chat-share:latest1Panel(Docker)
PANEL_PATH=/data/1panel
mkdir -p $PANEL_PATH
docker run -d \
--name 1panel \
--restart always \
--network host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v $PANEL_PATH/opt:/opt \
-v $PANEL_PATH/root:/root \
-e TZ=Asia/Shanghai \
moelin/1panel:latestGithub云托管
docker run -d \
--name gh-action \
--restart always \
--network host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-e RUN_AS_ROOT=true \
-e RUNNER_SCOPE=org \
-e ORG_NAME=你的组织名称 \
-e ACCESS_TOKEN=ghp_xxx你的PATxxx \
-e RUNNER_NAME="你的Runner名称" \
myoung34/github-runner:latest