常常使用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

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

docker run -d \
    --name memos \
    --restart=always \
    -p 43659:5230 \
    -v /home/memos:/var/opt/memos \
    neosmemo/memos:latest

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

hsuyelin非官方维护版

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 

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

git clone https://github.com/EverythingSuckz/TG-FileStreamBot
cd TG-FileStreamBot
docker build . -t stream-bot
docker run -d --name fsb \
    --restart unless-stopped \
    -v /home/tgbot/.env:/app/.env \
    -p 8001:8001 \
    stream-bot

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

webdav

docker run -d \
    --name=webdav \
    -e USERNAME=<user> \
    -e PASSWORD=<password> \
    -v /mnt/sda1:/data \
    -p 80:80 \
    --restart=always \
    derkades/webdav:latest

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


“一花一世界,一叶一天堂。君掌盛无边,刹那成永恒。”