首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
276 阅读
2
iStoreOS上使用WireGuard
213 阅读
3
麒麟KylinV10离线下载安装包及安装
210 阅读
4
麒麟v10系统openssh升级OpenSSH_10.0p2-OpenSSL 3.4.2
77 阅读
5
UNRAID增加和缩小虚拟机虚拟磁盘大小
63 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
硬件
登录
Search
标签搜索
nginx
数据库
unraid
PVE
麒麟
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
奥黛丽·逐爱者
累计撰写
132
篇文章
累计收到
7
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
硬件
页面
Linux常用
docker常用
关于
搜索到
31
篇与
docker
的结果
2026-04-16
单容器更新
假设你的 docker-compose.yml 结构如下(3个服务):services: moviepilot-v2: image: jxxghp/moviepilot-v2:latest # ... 其他配置 service-b: # 其他服务 service-c: # 其他服务进入目录cd /mnt/user/appdata/compose.manager/projects/moviepilot-v2/只更新 moviepilot 服务docker compose pull moviepilot docker compose up -d moviepilot
2026年04月16日
3 阅读
0 评论
0 点赞
2026-04-09
一个端口添加sslh实现端口复用
首选方案:Nginx Stream理由:1Panel 已经跑着 Nginx,你不需要安装任何额外软件,性能最好,最稳定,技术最“正统”。配置虽然要写几行代码,但结构非常清晰,一劳永逸。备选方案(简单场景):sslh理由:如果你不太想动 Nginx 的配置,或者担心改错,sslh 是独立安装的,不影响现有服务,配置极其简单。备选方案(复杂场景):FRP理由:只有当你的客户端机器没有公网 IP(比如你在家里的电脑上运行 rsync),或者你未来有更多内网穿透需求时,FRP 才是正确且唯一的选择。最终推荐:sslh考虑到你的场景(只有1个端口、服务器不能主动连外、面板可能直接用IP访问),sslh 是更稳妥、更简单的选择。{collapse}{collapse-item label="安装rsync-server" open}version: "3.8" services: rsync-server: image: eeacms/rsync container_name: rsync-server ports: - "5533:22" environment: SSH_AUTH_KEY_1: "ssh-rsa 秘== root@KylinV10" volumes: - /data/vdb/docker/compose/web/nginx/html/file:/data command: server restart: unless-stopped测试并能连接{/collapse-item}{collapse-item label="安装sslh和配置nginx" open}公网用户 → :38888 → sslh 分流 ├─ HTTPS/HTTP → Nginx(:8888) → 1Panel/Tomcat/WebDAV └─ SSH/rsync → rsync-server(:5533)1Panel 地址是 http://192.168.0.204:30900/,这是通过 IP 直接访问。但是 sslh 需要监听 38888 端口并转发 HTTP/HTTPS 流量。更新后的 docker-compose.yml使用 yrutschle/sslhversion: '3.3' services: sslh: image: ghcr.io/yrutschle/sslh:master container_name: sslh restart: always network_mode: "host" command: --listen 0.0.0.0:38888 --ssh 127.0.0.1:5533 --http 127.0.0.1:8888 --foreground参数 值 说明--listen 0.0.0.0:38888 监听公网端口--ssh 127.0.0.1:5533 转发到 rsync-server(SSH)--http 127.0.0.1:8888 转发到 Nginx(HTTP)--foreground - 容器前台运行(必须)注意!需要在 Nginx 配置中添加重定向重写规则,将返回的 Location 头中的端口和主机名修正。 location /webdav/ { proxy_pass http://192.168.0.204:32888/; 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_set_header X-Forwarded-Proto $scheme; client_max_body_size 0; proxy_buffering off; proxy_request_buffering off; proxy_read_timeout 86400; # 关键:修改后端返回的重定向地址 proxy_redirect http://192.168.0.204:8888/ http://$host:38888/; proxy_redirect http://$host:8888/ http://$host:38888/; }各服务访问地址:服务 地址1Panel 面板 http://192.168.0.204:38888/WebDAV http://192.168.0.204:38888/webdav/Tomcat 应用 http://192.168.0.204:38888/jxsj/Tomcat 应用 http://192.168.0.204:38888/tzsj/upstream tomcat { server tomcat9-jdk8:8080; } server { listen 8888; listen [::]:8888; server_name localhost; # 1Panel 面板路由(新增) location / { # 如果想让 / 直接访问 1Panel,用这个 proxy_pass http://192.168.0.204:30900/; 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_set_header X-Forwarded-Proto $scheme; # 1Panel 需要 WebSocket 支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # 或者保留原来的静态页,用 /panel/ 访问 1Panel # location /panel/ { # proxy_pass http://192.168.0.204:30900/; # 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_set_header X-Forwarded-Proto $scheme; # proxy_http_version 1.1; # proxy_set_header Upgrade $http_upgrade; # proxy_set_header Connection "upgrade"; # } # WebDAV 路由 location /webdav/ { proxy_pass http://192.168.0.204:32888/; 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_set_header X-Forwarded-Proto $scheme; client_max_body_size 0; proxy_buffering off; proxy_request_buffering off; proxy_read_timeout 86400; # 防止重定向跳转到 8888 proxy_redirect http://192.168.0.204:8888/ http://$host:38888/; proxy_redirect http://$host:8888/ http://$host:38888/; } # Tomcat 路由 location ~ ^/(jxsj|tzsj) { proxy_pass http://tomcat; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_redirect http://$host:8888/ http://$host:38888/; } # 静态页(如果 location / 被 1Panel 占用,这个需要删除或移到其他路径) # location / { # root /usr/share/nginx/html; # index index.html index.htm; # } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~* \.(lst|log|conf|config|bak|sql|git|svn)$ { deny all; return 404; } }{/collapse-item}{/collapse}
2026年04月09日
7 阅读
0 评论
0 点赞
2025-12-19
vsftpd日志问题
挂载问题sudo touch /data/vdb/docker/compose/vsftpd/logs/vsftpd.log sudo chmod 600 /data/vdb/docker/compose/vsftpd/logs/vsftpd.log sudo chown 0:0 /data/vdb/docker/compose/vsftpd/logs/vsftpd.log 改 compose,把单文件挂进去 volumes: - /data/vdb/docker/compose/vsftpd/logs/vsftpd.log:/var/log/vsftpd.log切割日志新建配置文件 注意权限 将权限改为 0644 或 0600(推荐 0644)vi /etc/logrotate.d/vsftpd-docker/data/vdb/docker/compose/vsftpd/logs/vsftpd.log实际路径 { daily rotate 7 # compress # delaycompress missingok notifempty copytruncate # 关键:把旧文件截断,fd 不断 sharedscripts postrotate endscript }验证logrotate -d /etc/logrotate.d/vsftpd-docker # 调试模式,不会真切 logrotate -f /etc/logrotate.d/vsftpd-docker # 强制立即切一次
2025年12月19日
13 阅读
0 评论
0 点赞
2025-12-13
离线升级docker compose和修改自定网络
{collapse}{collapse-item label="升级到 Compose v2 + Docker 20.10+" open}升级到 Compose v2 + Docker 20.10+Docker 在宿主机重启后,找不到容器原来连接的那个网络(ID:b256217ba0f0…)。网络是“临时”的(compose 默认创建的网络在 /var/lib/docker/network/files/ 里,不会随宿主机重启而持久化),所以重启后网络消失,容器再启动就报 network … not found,只能手动 docker compose down && docker compose up -d 重新创建。根本原因是:你用的是旧版 docker-compose(v1)或旧版 Engine,默认网络驱动是 bridge,且没有持久化;而容器在重启时会尝试重新加入“旧网络”,但旧网络已随宿主机重启被清空。解决思路:让网络“长存”,或者让容器不再依赖“旧网络”。一、准备安装包(在有外网的机器下好,拷进内网)Docker 引擎到 https://download.docker.com/linux/static/stable/x86_64/ 下载 docker-20.10.xx.tgz(20.10 以上才带 compose 插件支持)。Docker Compose到 https://github.com/docker/compose/releases 下载 docker-compose-linux-x86_64(就是 compose v2 单文件二进制)。systemd 单元文件新建一个 docker.service,内容见下一步。二、安装步骤(内网机器执行)# 1. 解压引擎并放到系统目录 tar -xzf docker-20.10.xx.tgz cp docker/* /usr/bin/ # 2. 注册 systemd 服务 cat > /etc/systemd/system/docker.service <<'EOF' [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target EOF # 3. 安装 compose v2(单文件即插即用) chmod +x docker-compose-linux-x86_64 mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose # 4. 启动 Docker systemctl daemon-reload systemctl enable --now docker # 5. 验证 docker version # Server ≥20.10 docker compose version # 能看到 v2.xx 即成功[root@KylinV10 data]# cp -rf docker/* /usr/bin/ cp:是否覆盖'/usr/bin/containerd'? yes cp:是否覆盖'/usr/bin/containerd-shim-runc-v2'? yes cp:是否覆盖'/usr/bin/ctr'? --------------------------------- 用 \cp 调用原生命令,屏蔽系统 alias: \cp -rf docker/* /usr/bin/[root@KylinV10 data]# ln -s /usr/local/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose ln: 无法创建符号链接 '/usr/local/lib/docker/cli-plugins/docker-compose': 文件已存在 [root@KylinV10 data]#先删掉旧的软链接,再重新建:rm -f /usr/local/lib/docker/cli-plugins/docker-compose ln -s /usr/local/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-composesystemctl daemon-reload systemctl restart docker docker compose version docker version[root@KylinV10 data]# docker version Client: Version: 29.1.3 API version: 1.52 Go version: go1.25.5 Git commit: f52814d Built: Fri Dec 12 14:48:47 2025 OS/Arch: linux/amd64 Context: default Error response from daemon: client version 1.52 is too new. Maximum supported API version is 1.39 [root@KylinV10 data]# docker compose version Docker Compose version v5.0.0 [root@KylinV10 data]#刚装的 Docker CLI 是 29.1.3,但 后台 daemon 还是旧版(API 1.39),所以 CLI 提示版本过高,无法通信。升级必须 连 daemon 一起换掉,否则只能降 CLI 版本——离线环境最简单的做法就是:先把旧 daemon 停掉 systemctl stop docker 用刚才解压出来的 同版本 dockerd 覆盖 \cp -f docker/dockerd /usr/bin/ 重新加载并启动 systemctl daemon-reload systemctl start docker 再验证 docker version # 两边都应为 29.1.3,API 1.52 docker compose version # v5.0.0 正常重启宿主机{lamp/}{/collapse-item}{collapse-item label="创建并加入自定义网络"}创建并加入自定义网络bridge 是 Docker 的默认网络名字,但它有两个硬伤:1、默认 bridge 不支持容器互相通过名称解析(只能走 IP);自定义 bridge(oracle_net)自带内嵌 DNS,容器之间 ping 容器名 直接通。2、默认 bridge 在宿主机重启后不会自动重建你之前通过 docker run --net bridge ... 启动的容器网络配置;而 compose 自己建的那个临时 bridge(ID 很长)重启会消失,于是出现 network not found。把网络显式建出来并设成 external: true,相当于告诉 compose:“这网我自己管,重启也在,你别删。”创建网络:在宿主机上一次性创建该网络(比如web_network以后一直存在,重启也不丢)docker network create web_network把正在跑的项目切到这个持久化网络即可,三步完成:1、把 compose 文件末尾的 networks 段改成:networks: web_network: external: true2、给每个 service 显式指定网络(如果你之前已经写了 networks: - web_network 可跳过)示例:services: nginx: networks: - web_network tomcat: networks: - web_network3、重新应用docker compose down # 停旧容器、清掉旧的“临时”网络 docker compose up -d # 用新的持久网络重新创建容器完成后验证:docker network ls # 能看到 web_network docker inspect web_network # 容器已挂进去 reboot # 宿主机重启 docker compose start # 不再报 “network not found”以后任何其他 compose 项目只要:networks: default: external: true name: web_network同网络下的互访只要满足下面两点,就可以“容器名 + 端口”互相访问:它们挂在同一个自定义 bridge 网络(这里就是 web_network);目标容器监听了对应端口(EXPOSE 或 -p 都可以,不需要映射到宿主机)。nginx 容器内部监听 80tomcat 容器内部监听 8080同一 web_network 下:在 tomcat 容器里 curl http://nginx:80 在 nginx 容器里 curl http://tomcat:8080Docker 的内嵌 DNS 会把容器名自动解析成各自的内网 IP,所以跨容器通信无需再记 IP,也无需暴露宿主机端口。{/collapse-item}{/collapse}
2025年12月13日
9 阅读
0 评论
0 点赞
2025-12-12
Oracle限制 trace 日志文件大小和数量
{collapse}{collapse-item label="限制日志生成" open}lsnrctl set trc_level off # 立即生效 lsnrctl set trc_filelen 20 # 如必须开,单文件 20 MB lsnrctl set trc_fileno 5 # 循环最多 5 个文件结论lsnrctl set trc_level off 已足够,listener 端后续 0 增长。数据库端继续用前面给的进 SQL*Plussqlplus / as sysdba执行(立即生效,重启也保留)ALTER SYSTEM SET MAX_DUMP_FILE_SIZE='500M' SCOPE=BOTH;listener.log 是 文本格式的普通监听日志(不是 trace),只要监听还在接收连接,它就会持续追加,但增长速度远慢于 .trc 文件。想让它不膨胀,有两种做法:直接关闭监听日志(最干净,生产常用)lsnrctl set log_status off立即生效,重启监听也保持;listener.log 停止增长,Oracle 不再写任何连接记录。[oracle@7e2f7cace564 oradata]$ lsnrctl set log_status off LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 12-DEC-2025 18:29:15 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) LISTENER parameter "log_status" set to OFF The command completed successfully [oracle@7e2f7cace564 oradata]$ {/collapse-item}{collapse-item label="折叠标题二"} 折叠内容二{/collapse-item}{/collapse}
2025年12月12日
17 阅读
0 评论
0 点赞
1
2
...
7