首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
269 阅读
2
麒麟KylinV10离线下载安装包及安装
206 阅读
3
iStoreOS上使用WireGuard
185 阅读
4
麒麟v10系统openssh升级OpenSSH_10.0p2-OpenSSL 3.4.2
69 阅读
5
UNRAID增加和缩小虚拟机虚拟磁盘大小
58 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
硬件
登录
Search
标签搜索
nginx
数据库
unraid
PVE
麒麟
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
奥黛丽·逐爱者
累计撰写
129
篇文章
累计收到
7
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
硬件
页面
Linux常用
docker常用
关于
搜索到
33
篇与
转载微信公众号文章
的结果
2025-07-06
用一套工具实现「影视自动化」,打造你的私人流媒体帝国
追剧、找资源、下载、整理、找字幕……这些繁琐的操作,其实可以完全交给机器自动完成。只需要一套开源工具组合,你的影视库就能像Netflix一样智能——自动更新剧集、下载高清资源、匹配字幕、生成精美海报墙。以下是这套系统的核心工具和协作逻辑:1. 工具分工:各司其职的“机器人”Prowlarr - 资源雷达全网扫描影视资源站点(如RARBG、海盗湾),自动筛选最佳下载链接,像“侦察兵”一样为后续工具提供情报。Sonarr - 电视剧管家专注管理电视剧。告诉它你想追的剧(比如《权力的游戏》),它会自动监控资源更新,确保你永远看到最新一集。Radarr - 电影管家电影版Sonarr。从院线新片到经典老片,自动匹配1080P、4K甚至蓝光资源,支持按画质、文件大小等精细过滤。qBittorrent - 无声下载器幕后完成所有下载任务,支持限速、排程,下载完成后自动通知其他工具进入下一步。Flaresolverr - 反爬破壁者专门破解那些“禁止机器人访问”的网站,确保资源侦察环节畅通无阻。ChineseSubFinder - 字幕猎人下载完成后自动全网搜索中文字幕,支持双语、特效字幕,告别手动匹配的麻烦。Tiny Media Manager - 图书馆员最后一步美化你的媒体库:自动从IMDb、豆瓣抓取电影简介、评分、演员表,生成统一风格的海报墙和NFO信息文件。2. 协作逻辑:一条龙自动化流水线你下达指令在Sonarr/Radarr中添加想看的剧或电影(比如搜索《奥本海默》)。资源侦察战Prowlarr立刻扫描全网,将最佳资源链接发送给Sonarr/Radarr。下载与分发Sonarr/Radarr指挥qBittorrent下载资源,完成后自动将文件移动到指定文件夹(如/movies/奥本海默 (2023)/)。字幕与美化ChineseSubFinder监听文件夹变化,立刻为视频匹配字幕。Tiny Media Manager扫描新文件,生成豆瓣式海报墙和简介,让你的媒体库媲美专业流媒体。终身维护如果发现更高清的资源(比如从1080P升级到4K),Radarr会自动替换旧文件,保持影音品质与时俱进。3. 为什么选择这套组合?零手动干预 - 从搜索到整理全程自动化,你只需要“点播”。资源最大化 - 聚合全球种子站,冷门老片也能轻松找到。智能升级 - 永远用最高画质填充你的媒体库。跨平台兼容 - 生成的文件可直接被Plex、Jellyfin等主流媒体服务器读取。最终效果:你的私人Netflix打开媒体服务器Plex,你会看到一个分类清晰、信息完整的影视库:电影按类型、评分排序,自带剧情简介和预告片剧集自动归档季数,每集包含字幕和海报电影墙滑动浏览时,仿佛拥有了一座线上影院这套系统完美解决了“收藏癖”和“懒人”的矛盾——既想要整饬有序的资源库,又不愿花费时间维护。现在,是时候让你的硬盘告别混乱了!4K、倍速、所有设备均可播放!(部署完成后,你唯一需要做的,就是躺在沙发上点击“播放”)部署方案:docker-compose参考:(威联通包含Plex的qkpg软件包形式,所以这里未部署Plex的docker镜像)version: '3'# === 全局配置 ===networks: media_network: driver: bridge ipam: config: - subnet: 172.28.0.0/16# === 服务定义 ===services: # 1. Prowlarr - 电影元数据服务 prowlarr: image: linuxserver/prowlarr:latest container_name: prowlarr ports: - "9696:9696" environment: - PUID=1000 - PGID=100 - TZ=Asia/Shanghai volumes: - /config:/config restart: always networks: - media_network # 2. Sonarr - 电视剧管理 sonarr: image: linuxserver/sonarr:latest container_name: sonarr ports: - "8989:8989" environment: - PUID=1000 - PGID=100 - TZ=Asia/Shanghai volumes: - /config:/config - /downloads:/downloads - /media:/media restart: always networks: - media_network # 3. Radarr - 电影下载管理 radarr: image: linuxserver/radarr:latest container_name: radarr ports: - "7878:7878" environment: - PUID=1000 - PGID=100 - TZ=Asia/Shanghai volumes: - /downloads:/downloads - /media:/media - /config:/config restart: always networks: - media_network # 4. Flaresolverr - 下载链接解析工具 flaresolverr: image: flaresolverr/flaresolverr:latest container_name: flaresolverr ports: - "8191:8191" - "8192:8192" restart: always networks: - media_network # 5. qBittorrent - BT下载客户端 qbittorrent: image: linuxserver/qbittorrent:latest container_name: qbittorrent ports: - "52000:52000" - "52000:52000/udp" - "8080:8080" environment: - PUID=1000 - PGID=100 - TZ=Asia/Shanghai volumes: - /downloads:/downloads - /config:/config restart: always networks: - media_network # 6. chinesesubfinder - 字幕自动下载 chinesesubfinder: image: allanpk716/chinesesubfinder:latest container_name: chinesesubfinder ports: - "19035:19035" environment: - PUID=1000 - PGID=100 - TZ=Asia/Shanghai volumes: - /config:/config - /media:/media restart: always networks: - media_network # 7. Tiny Media Manager (v4) - 元数据管理 tinymediamanager: image: dzhuang/tinymediamanager:latest-v4 container_name: tinymm restart: always ports: - "5800:5800" # Web界面端口 environment: - TZ=Asia/Shanghai - USER_ID=1000 - GROUP_ID=100 - ENABLE_CJK_FONT=1 # 支持中文字体 volumes: - /media:/media # 媒体文件目录(与Sonarr/Radarr共享) - /config:/config # 配置目录 networks: - media_network# === 高级配置 ===# (可选)全局环境变量或网络配置
2025年07月06日
11 阅读
0 评论
0 点赞
2025-07-06
Docker容器的配置和管理
https://mp.weixin.qq.com/s/F-yv_vvCO_qMlt_e_iuYlA1、安装Docker1.安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm22.配置docker yum源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.安装dockeryum install -y docker-ce4.启动dockersystemctl daemon-reloadsystemctl enable docker --nowsystemctl restart docker图1 docker安装引擎mkdir /etc/docker -psudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.credclouds.com", "https://k8s.credclouds.com", "https://quay.credclouds.com", "https://gcr.credclouds.com", "https://k8s-gcr.credclouds.com", "https://ghcr.credclouds.com", "https://do.nark.eu.org", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.1panel.live", "https://docker.rainbond.cc" ], "data-root": "/etc/docker"}EOFsystemctl daemon-reloadsystemctl restart docker图2 配置镜像加速器图3 优化效果验证2、安装Portainer容器可视化管理mkdir -p /usr/local/docker/portainerdocker run -it -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/docker/portainer:/data portainer/portainer图4 安装portainer访问地址:http://10.0.0.100:9000图5 portainer可视化界面图6 创建容器 图7 生命周期管理3、利用Dockerfile新建一个容器新镜像mkdir custom_centos && cd custom_centos# 基础镜像FROM centos:7 # 设置学号变量ARG STUDENT_ID=2024031390 # 1. 更换为阿里云YUM源(解决网络问题)RUN rm -f /etc/yum.repos.d/*.repo && \ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \ curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo && \ sed -i 's|^#baseurl|baseurl|g' /etc/yum.repos.d/CentOS-Base.repo && \ sed -i 's|^mirrorlist|#mirrorlist|g' /etc/yum.repos.d/CentOS-Base.repo && \ sed -i 's|//[^/]*/|//mirrors.aliyun.com/|g' /etc/yum.repos.d/CentOS-Base.repo # 2. 安装基础工具(分步执行+错误处理)RUN yum makecache fast && \ yum install -y vim && \ yum install -y openssh-server && \ yum install -y net-tools bind-utils iproute lsof telnet traceroute nc tcpdump wget curl rsync # 3. 配置SSHRUN ssh-keygen -A && \ echo "root:${STUDENT_ID}" | chpasswd && \ sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config && \ sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config # 4. 清理缓存减小镜像大小RUN yum clean all && rm -rf /var/cache/yum # 设置容器入口CMD ["/usr/sbin/sshd", "-D"] # 暴露SSH端口EXPOSE 22docker build -t 2024031390:v1 --build-arg STUDENT_ID=2024031390 .图8 新建新镜像# 启动测试容器docker run -d -p 2222:22 --name test_ssh 2024031390:v1# 测试SSH登录 (密码:2024031390)ssh root@localhost -p 2222# 测试文件传输 (宿主机→容器)echo "hello test" > test.txtdocker cp /root/test.txt test_ssh:/root/# 测试文件传输 (容器→宿主机)docker exec test_ssh touch /root/a.txtdocker cp test_ssh:/root/a.txt ./图9 ssh登陆容器图10 容器和宿主机之间互传文件在node2-2024031390部署harborcurl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgztar xvf harbor-offline-installer-v2.5.0.tgzcd harbor # 修改配置文件cp harbor.yml.tmpl harbor.ymlsed -i 's/hostname: reg.mydomain.com/hostname: node2-2024031390/' harbor.ymlsed -i 's/port: 80/port: 8080/' harbor.yml./install.sh图11 harbor搭建 sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.credclouds.com", "https://k8s.credclouds.com", "https://quay.credclouds.com", "https://gcr.credclouds.com", "https://k8s-gcr.credclouds.com", "https://ghcr.credclouds.com", "https://do.nark.eu.org", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.1panel.live", "https://docker.rainbond.cc" ], "data-root": "/etc/docker", "insecure-registries": ["10.0.0.120:8080"]}EOFsystemctl restart dockerdocker login 10.0.0.120:8080 -u admin -p Harbor12345docker tag 2024031390:v1 10.0.0.120:8080/library/2024031390:v1docker push 10.0.0.120:8080/library/2024031390:v1图12 将镜像推送到Harbor仓库图13 harbor查看镜像4、在node1上新建一个容器,通过与宿主机的端口1000.1001,1002映射分别访问“首页是班级+姓名”的个性化网站、“小鸟飞飞”html5游戏网站和“Nginx默认首页”网站。mkdir -p /home/2024031390/nginx/{sites,conf}mkdir /home/2024031390/nginx/sites/personalcat > /home/2024031390/nginx/sites/personal/index.html <<EOF<!DOCTYPE html><html><head> <title>my site</title></head><body> <h1>I am 2024031390 , welcome to cloud computing class</h1></body></html>EOFmkdir /home/2024031390/nginx/sites/gamecd /home/2024031390/nginx/sites/gameunzip xiaoniaofeifei.zipcat > /home/2024031390/nginx/conf/default.conf <<EOF# 默认网站 (1002端口)server { listen 1002; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; }} # 个人网站 (1000端口)server { listen 1000; server_name localhost; location / { root /usr/share/nginx/personal; index index.html index.htm; }} # 游戏网站 (1001端口)server { listen 1001; server_name localhost; location / { root /usr/share/nginx/game; index index.html index.htm; }}EOFdocker run -d \ --name nginx-multisite \ -p 1000:1000 \ -p 1001:1001 \ -p 1002:1002 \ -v /home/2024031390/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \ -v /home/2024031390/nginx/sites/personal:/usr/share/nginx/personal \ -v /home/2024031390/nginx/sites/game:/usr/share/nginx/game \ nginx:latest图14 多端口多网站访问实例启动在物理机上打开浏览器测试验证:图15 nginx默认首页图16 个人网站 图17 小鸟飞飞的小游戏5、通过docker-compose编排工具构建并运行一个综合应用程序,至少含有2个关联容器。mkdir wordpresscd wordpressvi docker-compose.ymlversion: '3.8' services: # WordPress 前端服务 wordpress: image: wordpress:latest container_name: wp-app restart: always ports: - "8080:8081" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: Admin@123 WORDPRESS_DB_NAME: wordpress volumes: - wordpress_data:/var/www/html depends_on: - db networks: - app-network # MySQL 数据库服务 db: image: mysql:8.0 container_name: wp-db restart: always environment: MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: Admin@123 MYSQL_ROOT_PASSWORD: Admin@123 volumes: - db_data:/var/lib/mysql networks: - app-network # 定义存储卷volumes: wordpress_data: db_data: # 定义网络networks: app-network: driver: bridgedocker-compose up -ddocker-compose ps图18 容器启动访问应用程序:http://10.0.0.100:8080图19 wordpress站点
2025年07月06日
9 阅读
0 评论
0 点赞
2025-07-06
Docker使用教程和镜像加速
字数 853,阅读大约需 5 分钟安装Docker官方安装脚本:curl -fsSL https://get.docker.com | sh国内一键安装脚本:bash <(curl -sSL https://emohe.cn/docker.sh)手动离线安装Docker下载Docker:• 官方文件下载地址:https://download.docker.com/linux/static/stable/x86_64/• 清华大学下载地址 :https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/解压文件(替换版本号):tar xzvf docker-26.1.3.tgz sudo mv docker/* /usr/local/bin/创建Docker服务文件:sudo vim /etc/systemd/system/docker.service添加以下内容:[Unit]Description=Docker Application Container EngineAfter=network-online.target firewalld.serviceWants=network-online.target[Service]Type=notifyExecStart=/usr/local/bin/dockerdExecReload=/bin/kill -s HUP $MAINPIDRestart=alwaysRestartSec=2StartLimitBurst=3StartLimitInterval=60sLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityDelegate=yesKillMode=process[Install]WantedBy=multi-user.target启动并启用Docker服务:sudo chmod +x /usr/local/bin/dockerdsudo systemctl daemon-reloadsudo systemctl start dockersudo systemctl enable docker查看版本:docker -v手动离线安装Docker-compose国内环境手动安装Docker-compose:点这里手动下载文件 上传到服务器的/usr/local/bin目录重命名为docker-compose:sudo cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose增加执行权限:chmod +x /usr/local/bin/docker-compose验证安装:docker-compose --version注意:由于是以二进制文件安装的docker-compose,运行命令需带-,例如:docker-compose up -dDocker Hub 镜像加速国内拉取镜像有时会遇到困难,对于学习或者开发者来说很难受,此时可以配置镜像加速。配置加速地址Ubuntu 16.04+、Debian 8+、CentOS 7+:创建或修改/etc/docker/daemon.json:sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<EOF{ "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.xuanyuan.dev" ]}EOF重启服务:sudo systemctl daemon-reloadsudo systemctl restart docker提示:若不方便重启,可在拉取镜像时指定加速地址,示例:docker pull docker.xuanyuan.dev/library/mysql:5.7说明:library代表官方镜像,用户镜像需替换为对应用户名。Docker Desktop 配置对于Windows系统的Docker Desktop用户,点击右上角设置,找到Docker Engine并修改配置,示例:{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.xuanyuan.dev" ]}点击右下角Apply & restart保存并重启。检查加速是否生效查看docker系统信息:docker info若结果中显示配置的加速地址(如Registry Mirrors下包含https://docker.xuanyuan.me和https://docker.xuanyuan.dev),则配置成功。Docker最新稳定加速源列表提供者镜像加速地址说明加速类型轩辕镜像(专业版)https://docker.xuanyuan.dev付费&稳定&可选国内cdnDocker Hub轩辕镜像(免费版)https://docker.xuanyuan.me免费&无限制Docker Hub华为云https://***.mirror.swr.myhuaweicloud.com需登录分配Docker Hub腾讯云https://mirror.ccs.tencentyun.com仅限腾讯云机器Docker Hub南京大学https://ghcr.nju.edu.cnghcr加速ghcr南京大学https://k8s.nju.edu.cnk8s加速k8sDocker常用命令功能命令说明编译镜像docker build -t 镜像名 .先docker login登录Docker Hub推送镜像docker push 用户名/镜像名需先标记镜像:docker tag 53321f173e 用户名/镜像名查看容器docker ps-a查看包括已停止的容器容器资源占用docker stats查看所有容器资源占用进入容器内部docker exec -it 容器名 sh结尾也可使用/bash创建容器网络docker network create my-networkmy-network为网络名称停止容器docker stop 容器名或ID-启动容器docker start 容器名或ID-删除镜像docker rmi -f 镜像名或ID-清除资源docker system prune清除所有未使用资源(容器、网络、镜像、缓存)
2025年07月06日
9 阅读
0 评论
0 点赞
2025-06-23
比lukcy更好用?专业docker 反代/监控/安全/导航!极空间部署「搞东西」反代
大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享自己的数码玩耍经验~折腾了数十款NAS和数百个Docker容器项目,关注我,每日获得docker玩法如果喜欢本文,请下方点击免费的点赞、在看!🔺玩法汇总:公众号首页,左下角点击教程合集项目均来源互联网,如有侵权,后台私信联系删除新发现的神器!一个端口搞定全部docker反代和单点登录,自带发现容器、导航面板。最近,在github又发现一个好东西——GoDoxy。它是一款轻量级、简单且高性能的 WebUI 反向代理工具。不过这玩意儿没有中文名,根据GoDoxy,我就给取了个「搞东西」的“信雅达"名称,大家权当看个乐儿。不同于目前主流的反代工具,GoDoxy具有如下几个特点,真的可以说是八项全能!唯一的缺点就是英文界面,不过用上浏览器翻译,那是毫无问题。项目地址(值得star):https://github.com/yusing/godoxy项目特点:1.读取docker.sock,并自动发现所有容器入口。2.通过一个域名,将所有容器反代,支持SSO单点登录。3.支持多节点部署。4.支持ACL访问控制,支持国家、时区、IP的访问策略。5.自动化更新SSL证书。6.拥有容器状态和流量监控。7.支持HTTP/HTTPS/TCP/UDP反代和端口转换。8.自动生成容器导航栏。 9.支持X86和ARM架构。一、项目部署1、配置域名这里先说一下GoDoxy的逻辑,它不同于寻常的反代工具,让我们自定义一个三级域名:端口的形式来访问,它是一套全自动的反代工具,有点类似一个SSO,在所有容器前自动加一层代理面板。互联网通过访问我们设置的GoDoxy域名,来访问所有的容器服务,并且我们只需要透出GoDoxy的一个HTTPS端口,就可以实现所有器的访问,生成的容器域名是容器名.domain.exm:端口PS.部分容器涉及到URL后缀的,需要手动增加后缀,比如blossom。因此,我们需要先创建一个DNS解析,解析到下面两个域名。其中泛域名是用于容器访问使用,而GoDoxy域名是用于WebUI登录。1️⃣泛域名: *.domain.top2️⃣GoDoxy域名:godoxy.domain.top ——前缀可改这里,很多人不喜欢godoxy这个域名前缀,这是可以改的,不过改了以后需要去修改根目录下的.env文件。首先,下载最新exe格式的压缩包解压,然后把生成的文件夹丢到极空间的个人空间里。建议采用常规的/路径/docker/项目的方式来管理。打包夸克:pan.quark.cn/s/27fcaa38eb67 🔻修改.env文件第72行,这里的参数GODOXY_FRONTEND_ALIASES改成你自己设置的域名前缀即可。🔻修改.env文件第52、53行,这里是我改的应用访问端口,也可以根据自己的情况修改。接着打开极空间的DDNS服务,根据自己的需要配置对应的DNS解析服务。这里以阿里云为例,点击上方蓝字登录阿里云获取Key和Secret,然后在下方增加前面提到的两个域名,保存并更新即可。2、配置文件接着使用极空间的文本编辑器打开目录/godoxy/config/config.yaml文件,主要修改红框内的两个地方(二选一)。本地证书: 即我上面未注释的部分,放你的GoDoxy域名申请下来的本地证书,在/godoxy/certs/目录下,然后在红框内的key_path和cert_path里的XXXX替换成文件名。(可选)建议使用通配符证书,确保都可以打开域名。缺点是非自签的,3个月要换一次。autocert: provider: local key_path: certs/更名.key cert_path: certs/更名.crt Cloudflare证书: 下方大红框内的配置,需要填写你的Cloudflare邮箱账号、域名信息以及auth_token。没啥缺点,首选建议。autocert: provider: cloudflare email: abc@gmail.com # 邮箱账号 domains: # 填写你的域名列表 - "*.domain.com" - "domain.com" options: auth_token: 填写Couldflare API KeyCloudflare Api Token获取方式如下,打开个人配置文件,选择API令牌——创建令牌——自定义令牌。在自定义令牌里,增加SSL和证书的权限保存。令牌只会出现一次,记得保存好备用,否则只能下次更新替换了。3、启动容器打开极空间docker应用,选择Compose标签,新建项目godoxy,在添加方式里选择从本地导入,然后选择目录下的compose.yaml文件。导入以后,我们需要修改所有的环境变量所在位置,点击上方的查询路径按钮,复制godoxy文件夹所在的目录路径。将代码中所有的【极空间路径】中文,替换成复制下来的极空间路径,并创建Compose。如果启动后,发现子容器godoxy一直重启,那么看一下容器的GODOXY_GID和GODOXY_UID两个环境变量是不是0,如果不是的话手动编辑一下改成0即可。二、GoDoxy简介GoDoxy部署完成以后,原则上我们就可以关闭所有非GoDoxy的容器端口了,因为GoDoxy会统一读取docker.sock,并且将所有容器进行反代。直接打开域名https://godoxy.你的域名.你的后缀:38843登录系统,输入账号密码cherry/cherry登录。🔻初始密码,可以在.env的25、26行修改。下面的图片是系统首页,这里展示了宿主机内的所有创建的容器,包括停止和运行中的。并且根据项目内设的规则进行了分类,包括容器管理、媒体、下载、普通docker等。这里所有自动发现的容器都是可以点击的,并且已经反代完成。将鼠标移动到容器前面的名字上,可以看到浮窗里会显示反代后的URL。切换到Config Editor界面,这里是对容器内/config/config.yaml文件的配置。这样我们就不需要去NAS里修改了,直接可以在页面上修改。比较重要的配置包括ACL策略(即黑白名单,支持地区、国家、IP等);PVE控制接入;远程Docker管理;通知;域名匹配等。内容比较多,就不一一介绍了,感兴趣的可以去官方网站研究。Proxies页面展示的所有自动发现的容器,以及它们的端口、状态、启动时间、网络延迟等,只是一个展示。Metrics则是所有容器的服务监控。Docker里是所有容器的列表展示,点开单个容器可以看到具体的容器日志。由于GoDoxy是支持接入远程docker.sock的,所以理论上可以多节点管理任何网络可达的Docker,真正成为时间管理大师。总结这个项目我折腾了有一段时间,因为作者设置了很多安全的参数,缺少一个系统可以启动,但是无法登录也没有报错,加上自己的英文能力不太行,所以可以说是一边摸索一边询问,最后也在作者的帮助下顺利完成了项目部署。整体体验下来,这一套反代工具,集成了安全登录、反代、容器发现、导航面板、容器监控、日志查看、远程容器管理等等功能,不可谓不强大!搭配极空间的DDNS服务、自带浏览器,可以解决我们绝大多数的容器外网访问安全问题,让NAS深度玩法得到更多的保障!
2025年06月23日
14 阅读
0 评论
0 点赞
2025-06-23
Dockerfile最佳实践
使用多阶段构建❌ 错误示范一个常见的错误是在单个阶段中构建所有内容,最终导致构建的镜像中包含所有构建依赖项,特别臃肿。FROM node:22WORKDIR /appCOPY . .RUN npm installRUN npm run buildEXPOSE 3000CMD ["npm", "start"]✅正确做法使用多阶段构建将构建环境与运行时环境分开。# Build stageFROM node:22 AS buildWORKDIR /appCOPY package*.json ./RUN npm installCOPY . .RUN npm run build# Production stageFROM node:22-slimWORKDIR /appCOPY --from=build /app/dist ./distCOPY --from=build /app/package*.json ./RUN npm install --only=productionEXPOSE 3000CMD ["npm", "start"]选择正确的基础镜像❌ 错误示范FROM ubuntu:latestRUN apt-get update && apt-get install -y python3 python3-pipCOPY . /appWORKDIR /appRUN pip install -r requirements.txtCMD ["python3", "app.py"]✅正确做法选择满足您要求的最小基础镜像,查找带有 Docker Hub 官方徽章或已验证发布者标记的基础镜像,因为这些映像往往更安全且维护得更好。FROM python:3.12-slimWORKDIR /appCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY . .CMD ["python", "app.py"]使用固定的镜像版本号❌ 错误示范不要使用像 latest 这样可能会意外更改的镜像版本。FROM node:latestWORKDIR /appCOPY . .RUN npm installCMD ["node", "index.js"]✅正确做法固定到特定镜像版本。FROM node:22.1.0WORKDIR /appCOPY . .RUN npm installCMD ["node", "index.js"]即便使用固定的基础镜像版本,由于安全更新等原因远程仓库存储的镜像也可能会发生改变,如果你不希望这种改变发生,使用哈希摘要版本号来保证镜像不变。FROM node:22.1.0@sha256:12a331df1e31e40b2f37d2524037973908895fb766b8bce742cdf8b1216e5ac2WORKDIR /appCOPY . .RUN npm installCMD ["node", "index.js"]优化镜像层缓存❌ 错误示范不要将频繁变化的文件放在前面。FROM node:22WORKDIR /app# 源代码变化频繁,直接拷贝源代码会导致后续的镜像层缓存失效,构建变慢COPY . .RUN npm installCMD ["npm", "start"]✅正确做法先拷贝包依赖管理文件,如果依赖没有变化,npm install将使用缓存而无需重新下载依赖,加速构建过程。FROM node:22WORKDIR /app# Copy package files firstCOPY package*.json ./# Install dependenciesRUN npm install# Then copy the rest of the codeCOPY . .CMD ["npm", "start"]正确处理apt-get和其他包管理器❌ 错误示范不要将 update 和 install 命令分开,此方法会缓存 apt-get update 结果,这意味着以后的构建可能会安装过时的软件包。FROM ubuntu:24.04RUN apt-get updateRUN apt-get install -y nginxRUN apt-get install -y curl✅正确做法始终将 update 和 install 合并到单个 RUN 指令中。FROM ubuntu:24.04RUN apt-get update && apt-get install -y --no-install-recommends \ nginx \ curl \&& rm -rf /var/lib/apt/lists/*使用.dockerignore排除不必要的文件❌ 错误示范不要将整个项目目录作为构建上下文发送。# Without .dockerignore, everything gets sent to Docker daemon$ docker build -t myapp .✅正确做法创建.dockerignore文件排除不必要的文件,这可以减小构建上下文的大小,加快构建过程,并有助于防止敏感信息泄漏到您的镜像中。.git.github.gitignorenode_modulesnpm-debug.logDockerfile.dockerignore*.md.env**.logcoveragedistbuildtmp不要为环境变量创建多个镜像层❌ 错误示范每个环境变量会生成一个新的镜像层。FROM node:22ENV NODE_ENV=productionENV APP_PORT=3000ENV APP_VERSION=1.2.3✅正确做法FROM node:22# Group related environment variablesENV NODE_ENV=production \ APP_PORT=3000 \ APP_VERSION=1.2.3设置适当的用户❌ 错误示范直接以root用户运行。FROM nginx:alpineCOPY app/ /usr/share/nginx/html# Implicitly runs as rootCMD ["nginx", "-g", "daemon off;"]✅正确做法创建和使用非特权用户。FROM nginx:alpine# Create a non-root userRUN addgroup -g 1000 appgroup && \ adduser -u 1000 -G appgroup -h /home/appuser -D appuser# Configure applicationCOPY --chown=appuser:appgroup app/ /usr/share/nginx/html# For services that need to bind to privileged ports,# start as root then switch to the non-root userUSER appuser# For processes that don't need rootCMD ["nginx", "-g", "daemon off;"]使用WORKDIR而不是RUN cd❌ 错误示范这种方法易出错,难阅读。FROM node:22# Bad practice - using cd commandsRUN cd /opt && mkdir appRUN cd /opt/app && npm init -yCOPY . /opt/app/RUN cd /opt/app && npm installCMD cd /opt/app && npm start✅正确做法使用WORKDIR 指定目录。FROM node:22# Good practice - using WORKDIRWORKDIR /opt/appRUN npm init -yCOPY . .RUN npm installCMD ["npm", "start"]
2025年06月23日
5 阅读
0 评论
0 点赞
1
...
4
5
6
7