常常使用docker,容器太多,记录太杂,索性扔博客上,方便自己查看与使用。
docker一键安装脚本
wget -qO- get.docker.com | bash
境内机器,安装 docker 并且指定镜像地址为 Aliyun
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
Watchtower 自动更新镜像,并且保持最初部署时的参数,其中 chatgpt-web moviepilot memos filecodebox 为需要自动更新镜像的容器。【参考此处】
docker run -d \
--name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
chatgpt-web moviepilot memos filecodebox
仅仅运行一次
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -cR \
moviepilot
docker系列教程1.使用 VPS 下载 Docker 镜像并导入到本地服务器的过程
alist
docker run -d \
--restart=always \
-v /etc/alist:/opt/alist/data \
-p 54644:5244 \
-e PUID=0 \
-e PGID=0 \
-e UMASK=022 \
--name="alist" \
xhofe/alist:latest
安装、使用、美化等教程,参考安安稳稳
获取随机密码
docker exec -it alist ./alist admin random
aliyundrive-subscribe
默认账号密码:admin admin
docker run -d \
--name aliyun \
-p 8002:8002 \
--restart=always \
looby/aliyundrive-subscribe:latest
audiobooks
docker run -d \
-p 8378:80 \
-v /root/audiobooks/book:/audiobooks \
-v /root/audiobooks/config:/config \
-v /root/audiobooks/metadata:/metadata \
--name audiobookshelf \
advplyr/audiobookshelf
chatgpt
推测
docker run -d \
-p 56122:3000 \
--restart=always \
-e BASE_URL="https://xxx.com" `# 自定义接口地址`\
-e OPENAI_API_KEY="xxx" \
-e CODE="passwd" \
yidadaa/chatgpt-next-web
docker run -d \
--restart=always \
--name=chatgpt \
-p 3002:3002 \
-e OPENAI_API_KEY: xxxxxx \
chenzhaoyu94/chatgpt-web:main
docker run -d \
--name chatgpt-web \
--restart=always \
-p 56122:3002 \
--env OPENAI_API_KEY=<api_key> \
--env AUTH_SECRET_KEY=<password> \
chenzhaoyu94/chatgpt-web:latest
docker run -d \
--name openai \
--restart always \
-p 42356:18080 \
-e MAX_TOKENS=300 \
-e TEMPERATURE=0.6 \
-e KEYS=<api_key> \
dqjdda/openai-java
chinesesubfinder
docker run -d \
--restart=always \
-v /home/cnsub/config:/config \
-v /home/nastools/media/storage:/media/storage \
-v /home/cnsub/browser:/root/.cache/rod/browser \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-e UMASK=000 \
-p 19035:19035 \
-p 19037:19037 `# webui 的视频列表读取图片用,务必设置不要暴露到外网` \
--name cnsub \
--hostname chinesesubfinder \
--log-driver "json-file" \
--log-opt "max-size=100m" `# 限制docker控制台日志大小,可自行调整` \
allanpk716/chinesesubfinder
emby
官方原版
docker run -d \
--name=emby \
--restart=always \
-v /root/emby/config:/config \
-v /root/emby/share1:/mnt/share1 \
-v /root/emby/share2:/mnt/share2 \
-v /root/emby/share3:/mnt/share3 \
-p 8096:8096 \
-p 8920:8920 \
-e UID=1000 \
-e GID=100 \
-e GIDLIST=100 \
linuxserver/emby:latest
开心体验版1
docker run -d \
-e PUID=1000 \
-e PGID=1000 \
-v /mnt/nas/storages:/media/nas \
-v /mnt/nas/emby/config:/config \
-p 8096:8096 \
--name=emby \
--restart unless-stopped \
xinjiawei1/emby_unlockd:latest
开心体验版2
软链接要把原始文件也映射进去,并且保持目录一样
注意修改配置文件位置
docker run -d \
--network=bridge \
-p '80:8096' \
-v /root/emby/config:/config \
-v /home/emby/config:/config \
-v /root/emby/share1:/root/emby/share1 \
-v /root/emby/share2:/root/emby/share2 \
-v /root/emby/share3:/root/emby/share3 \
-v /root/emby/share1-link:/root/emby/share1-link \
-v /root/emby/share2-link:/root/emby/share2-link \
-v /root/emby/share3-link:/root/emby/share3-link \
-e TZ="Asia/Shanghai" \
-e UID=0 \
-e GID=0 \
-e GIDLIST=0 \
--restart always \
--name emby \
lovechen/embyserver:latest
fileCodeBox
docker run -d \
--restart=always \
-p 41365:12345 \
-v /opt/FileCodeBox/:/app/data \
--name filecodebox \
lanol/filecodebox:latest
firefox
docker run -d \
--name=firefox \
-e TZ=Asia/Hong_Kong \
-e DISPLAY_WIDTH=1920 \
-e DISPLAY_HEIGHT=1080 \
-e KEEP_APP_RUNNING=1 \
-e ENABLE_CJK_FONT=1 \
-e SECURE_CONNECTION=0 \
-e VNC_PASSWORD=<密码> \
-p 5800:5800 \
-v /www/firefox:/config:rw \
--security-opt seccomp=unconfined \
--shm-size 1500m \
jlesage/firefox
jellyfin
docker run -d \
--name=jellyfin \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-p 8096:8096 \
-v /mnt/nas/jellyfin/config:/config \
-v /mnt/nas/storage:/data/storage \
--restart unless-stopped \
lscr.io/linuxserver/jellyfin:latest
jellyseerr
docker run -d \
--restart=always \
--name jellyseerr \
-e LOG_LEVEL=debug \
-e TZ=Asia/Tashkent \
-e JELLYFIN_TYPE=emby \
-p 5055:5055 \
-v /home/ubuntu/jellyseer/config:/app/config \
--restart unless-stopped \
fallenbagel/jellyseerr:latest
lan-clip
docker run -d \
-p 9501:9501 \
--name lan-clip \
--restart always \
csmayi/lan-clip:latest
lucky
端口转发程序,未开源;host模式, 同时支持IPv4/IPv6
docker run -d --name lucky --restart=always --net=host gdy666/lucky
容器内配置文件夹:/goodluck
默认登陆地址 : http://{IP地址}:16601
默认账号:666
默认密码:666
memos
最美观的版本 0.14.4,美化完美,但功能少
功能最全面的版本 0.18.1 支持多种数据库、webhook、评论等
美化&使用,差不多
官方讨论区、木木木木木、你是人间的四月天、使用指南 进阶版
缘生笔记
自定义字体 霞鹜文楷、支持私有统计Umami、自定义背景、配置对象存储
docker run -d \
--name memos \
--restart=always \
-p 43659:5230 \
-v /home/memos:/var/opt/memos \
neosmemo/memos:0.14.4
nas-tools
nastools官方最新闭源版本
docker run -d \
--restart=always \
--name nas-tools \
--hostname nas-tools \
-p 3000:3000 \
-v /home/nastools/config:/config \
-v /home/nastools/media:/media \
-e PUID=0 \
-e PGID=0 \
-e UMASK=000 `# 掩码权限,默认000,可以考虑设置为022` \
-e NASTOOL_AUTO_UPDATE=false \
nastool/nas-tools:latest
nastools最后一个带有BT索引的版本!
docker run -d \
--restart=always \
--name nas-tools \
--hostname nas-tools \
-p 3000:3000 \
-v /home/nastools/config:/config \
-v /home/nastools/media:/media \
-e PUID=0 \
-e PGID=0 \
-e UMASK=000 `# 掩码权限,默认000,可以考虑设置为022` \
-e NASTOOL_AUTO_UPDATE=false \
19970688/nastools-bt:latest
docker run -d \
--restart=always \
--name nas-tools \
--hostname nas-tools \
-p 3000:3000 \
-v /home/nastools/config:/config \
-v /home/nastools/media:/media \
-e PUID=0 \
-e PGID=0 \
-e UMASK=000 `# 掩码权限,默认000,可以考虑设置为022` \
-e NASTOOL_AUTO_UPDATE=false \
hsuyelin/nas-tools:latest
navidrome
音乐服务器
docker run -d \
--name navidrome \
--restart=unless-stopped \
-v /data/public/music:/music \
-v /opt/Navidrome/data:/data \
-p 24533:4533 \
-e ND_LOGLEVEL=info \
deluan/navidrome:latest
nezha-dash
NezhaDash 是一个基于 Next.js 和 哪吒监控 的仪表盘.demo
创建文件 /opt/nezha/NezhaDash/.env
## nezha 面板地址地址
NezhaBaseUrl=http://ip:8008
## nezha 面板 API Token
NezhaAuth=xxx
## 面板默认显示语言 zh zh-t en ja
DefaultLocale=zh
## 是否强制显示所有服务器
ForceShowAllServers=false
## 获取数据间隔(毫秒)
NEXT_PUBLIC_NezhaFetchInterval=5000
## 是否显示旗帜
NEXT_PUBLIC_ShowFlag=true
## 是否禁用卡通人物
NEXT_PUBLIC_DisableCartoon=false
## 是否显示标签
NEXT_PUBLIC_ShowTag=true
## 是否显示流量信息
NEXT_PUBLIC_ShowNetTransfer=false
## 是否强制使用SVG旗帜
NEXT_PUBLIC_ForceUseSvgFlag=false
## 自定义Logo
NEXT_PUBLIC_CustomLogo=https://nezha-cf.buycoffee.top/apple-touch-icon.png
## 自定义标题
NEXT_PUBLIC_CustomTitle=NezhaDash
## 自定义描述(无多语言支持)
NEXT_PUBLIC_CustomDescription=简单美观的仪表板.
docker run -d --name nezha-dash \
-v /opt/nezha/NezhaDash/.env:/app/.env \
-p 41426:3000 \
--restart always \
hamster1963/nezha-dash:latest
proxy-socks5
goproxy
免费版不支持设置密码IP等认证,同时启动http和socks5代理
docker run -d --name goproxy \
--restart always \
--network host \
stilleshan/goproxy \
sh -c '/proxy http -p :10081 & /proxy socks -p :10082'
xkuma/socks5
支持设置密码与服务器监听IP,只能启动socks5代理
docker run -d --name socks5 \
--restart always \
--network host \
-e PROXY_USER=user \
-e PROXY_PASSWORD=123 \
-e PROXY_SERVER=[::]:10082 \
xkuma/socks5
127.0.0.1:表示监听本机ipv4地址;
0.0.0.0:表示监听所有ipv4地址;
[::]:表示监听所有ipv6地址;
[::1]:表示监听本机ipv6地址;
不设置PROXY_USER与PROXY_PASSWORD则关闭密码认证;
检测代理可用性,ipv6需用[]框起来
curl --http ip:port google.com
curl --socks5 ip:port google.com
curl --socks5 ip:port --proxy-user user:passwd google.com
qbittorrent
docker run -d \
--name=qbittorrent \
-e PUID=0 \
-e PGID=0 \
-e TZ=/Asia/Shanghai \
-e WEBUI_PORT=8080 \
-p 8080:8080 \
-p 6881:6881 \
-p 45263:45263 \
-p 6881:6881/udp \
-v /home/qbit/config:/config \
-v /home/nastools/media:/home/nastools/media \
--restart unless-stopped \
lscr.io/linuxserver/qbittorrent:latest
rsshub
docker run -d \
--name rsshub \
-p 1200:1200 \
-e CACHE_EXPIRE=60 \
-e GITHUB_ACCESS_TOKEN=example \
diygod/rsshub
speedtest
docker run -d -p 6688:80 ilemonrain/html5-speedtest:alpine
tgcheck
docker run -d \
--name=tgcheck \
--restart always \
-v /home/tgcheck/config/config.toml:/config.toml \
-e TGTOKEN=<bot_token> \
mxssl/tg-captcha-bot:v1.1.10
tg-fileStreamBot
mkdir /home/TG-FileStreamBot
cd /home/TG-FileStreamBot
touch fsb.env
fsb.env内容如下
API_ID=123456
API_HASH=cSDGVSFVSDFSDF0e8
BOT_TOKEN=5555555:SSSSSUaKk
LOG_CHANNEL=-100200555555
PORT=18088
HASH_LENGTH=6
HOST=http://ip:18088
ALLOWED_USERS=123456111
cd /home/TG-FileStreamBot
docker run -d --name fsb \
--restart unless-stopped \
--env-file fsb.env \
-p 18088:18088 \
ghcr.io/everythingsuckz/fsb:latest
transmission
docker run -d \
--restart=always \
--name transmission \
-e TRANSMISSION_WEB_HOME=/transmission-web-control/ \
-e USER=<用户名> \
-e PASS=<密码> \
-p 9091:9091 \
-p 51413:51413 \
-p 51413:51413/udp \
-v ~/transmission/config:/config \
-v ~/transmission/downloads:/downloads \
-v ~/transmission/watch:/watch \
linuxserver/transmission
vocechat
docker run -d \
--restart=always \
-p 7800:3000 \
--name vocechat-server \
privoce/vocechat-server:latest
☛使用bot api向用户发送信息
curl -L 'https://xxx.com/api/bot/send_to_user/user_id' \
-H 'Content-Type: text/markdown' \
-H 'Accept: application/json; charset=utf-8' \
-H 'x-api-key: api_key' \
-d 'message'
webdav
docker run -d \
--name=webdav \
-e USERNAME=<user> \
-e PASSWORD=<password> \
-v /mnt/sda1:/data \
-p 80:80 \
--restart=always \
derkades/webdav:latest
zdir pro
多功能文件分享程序,官网
docker run -d --name="zdir" \
-v /opt/zdir/data:/opt/zdir/data \
-v /data/public:/opt/zdir/data/public \
-v /data/private:/opt/zdir/data/private \
-p 6080:6080 \
--restart=always \
helloz/zdir:4
zerotier
docker run --device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
-v /home/zerotier:/var/lib/zerotier-one \
--name zerotier-one \
--restart=always \
-d bltavares/zerotier
加入网络
docker exec zerotier-one zerotier-cli join 网络ID
设置全局路由
- A机器开启系统转发,在 /etc/sysctl.conf 里添加以下内容:
net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding=1 net.ipv6.conf.all.forwarding=1 net.ipv6.conf.all.proxy_ndp=1
执行
sysctl -p
开启转发。如果你有防火墙,记得给相应的网段放行。 - 在 Managed Routes 中添加一条 0.0.0.0/0 to A机器的zt网络IP 的路由规则[IPV6 ::/0]
- B机器设置全局路由
docker exec zerotier-one zerotier-cli set 网络ID allowDefault=1
查看网络状态
docker exec -it zerotier-one zerotier-cli status
Comments | NOTHING