typecho 发布的文章

一步一步排查:

  1. 确认网络连通性
    curl -v https://registry-1.docker.io/v2/
    看是否能够连通。如果卡住、超时或者报错,说明问题是网络层的问题。
  2. 是否被代理、GFW 阻断?
    如果你在中国大陆,访问 Docker Hub 很可能是被墙了。

✅ 解决办法:配置镜像加速器
编辑 /etc/docker/daemon.json,添加如下内容:

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
或者用阿里云/网易的镜像加速器,比如:

{
"registry-mirrors": ["https://<你的阿里云ID>.mirror.aliyuncs.com"]
}
然后重启 Docker:

sudo systemctl daemon-reexec
sudo systemctl restart docker

  1. 测试 DNS 是否正常解析
    nslookup registry-1.docker.io
    或者:
    dig registry-1.docker.io
    如果没有 IP 地址返回,说明 DNS 配置可能有问题。

✅ 解决方法:设置公共 DNS
编辑 Docker 的 DNS 配置 /etc/docker/daemon.json:
{
"dns": ["8.8.8.8", "1.1.1.1"]
}
然后重启 Docker。

  1. 测试是否能 ping Docker Hub
    ping registry-1.docker.io
    注意: 一些 Docker Hub 域名不响应 ping,这是正常的,但如果出现 Network is unreachable 或者 Name or service not known,就说明网络或 DNS 出问题。
  2. 尝试登录
    docker login
    可以规避匿名用户被限速的情况。
  3. 确认系统时间正确
    系统时间不对可能导致 TLS 握手失败:

如不正确可同步:

sudo ntpdate time.windows.com

  1. 如果仍不行
    你也可以尝试国内镜像服务,比如:

阿里云容器镜像服务(可免费申请)
网易云镜像加速器
DaoCloud 镜像加速器

一、docker官方提供的一键安装docker命令

1、一键安装命令

wget -qO- https://get.docker.com | bash -s docker --mirror Aliyun

2、安装完成后需要执行

systemctl daemon-reload

systemctl restart docker

3、证明安装完成,docker 的命令如下:

systemctl start docker # 启动docker
systemctl stop docker # 停止docker
systemctl status docker # 查看docker状态
systemctl restart docker # 重新启动docker

以下为官方安装文档:https://jellyfin.org/docs/general/installation/container

  1. 下载最新的容器镜像。

    docker pull jellyfin/jellyfin
    
  2. 为配置和缓存数据创建持久存储。

    在主机上创建两个目录并使用绑定挂载:

    mkdir ./path/to/config -p
    mkdir ./path/to/cache -p

    或者创建两个持久卷:

    docker volume create jellyfin-config
    docker volume create jellyfin-cache

    3、 通过以下方式之一创建并运行容器。

    注意:Docker 的默认网络模式是桥接模式。如果省略主机模式,则将使用桥接模式。使用主机网络 ( --net=host) 是可选的,但必须使用 DLNA 才能使用。

    一、使用 Docker 命令行界面:

    docker run -d \
    --name jellyfin \
    --user uid:gid \
    --net=host \
    --volume /path/to/config:/config \ # Alternatively
    --volume jellyfin-config:/config
    --volume /path/to/cache:/cache \ # Alternatively
    --volume jellyfin-cache:/cache
    --mount type=bind,source=/path/to/media,target=/media \
    --restart=unless-stopped \
    jellyfin/jellyfin

    正确命令:

    docker run -d --name jellyfin --net=host --volume ./path/to/config:/config --volume ./path/to/cache:/cache --mount type=bind,source=/mnt/sda/smba,target=/media1 --mount type=bind,source=/mnt/sdb/av250G,target=/media2,readonly --restart=unless-stopped jellyfin/jellyfin

    需要使用绑定挂载将文件夹从主机操作系统传递到容器操作系统,而卷由 Docker 维护,可以认为更容易通过外部程序备份和控制。对于简单的设置,使用绑定挂载比使用卷更容易。如果需要,可以绑定挂载多个媒体库:

    • -mount type=bind,source=/path/to/media1,target=/media1
      --mount type=bind,source=/path/to/media2,target=/media2,readonly
      ...etc

    二、使用 Docker compose

    创建一个docker-compose.yml包含以下内容的文件。在下面的用户行中添加您想要运行 jellyfin 的 UID 和 GID,或者删除用户行以使用默认用户(root)。

    version: '3.5'
    services:
    jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    user: uid:gid
    network_mode: 'host'
    volumes:

    • /path/to/config:/config
    • /path/to/cache:/cache
    • type: bind
      source: /path/to/media
      target: /media
    • type: bind
      source: /path/to/media2
      target: /media2
      read_only: true
      restart: 'unless-stopped'
      # Optional - alternative address used for autodiscovery
      environment:
    • JELLYFIN_PublishedServerUrl=http://example.com
      # Optional - may be necessary for docker healthcheck to pass if running in host network mode
      extra_hosts:
    • 'host.docker.internal:host-gateway'

    然后在docker-compose.yml运行相同的文件夹中:

    docker compose up

    要在后台运行容器,请添加-d上述命令。

    ### kodi安装jellyfin插件访问jellyfin服务器

    参考文章:https://sspai.com/post/76951

    # Kodi搭建

    搭建并配置好Jellfin之后,接着需要安装Kodi。

    官网地址:Kodi

    下载到本地后,默认安装即可,安装结束之后勾选Run Kodi即可进入Kodi页面:

1.png


默认为英文,接着进行配置。

点击设置,进入Interface,在左边的菜单里选择 Skin 并把字体改成 Arial based,在Regional选项设置语言选项,下拉选择中文简体就会自动安装,一定要注意是先选择字体,不然中文字符会乱码:

2.png

3.png


接着点击小齿轮图标进入设置界面,选择系统菜单项,在左边的菜单里选择插件,然后打开未知来源选项:

4.png


接着回到进入设置界面,选择文件管理菜单项,在左边的菜单里选择添加源,然后在弹出的窗口里输入下面的地址:

5.png

6.png


接着安装 Jellyfin 插件,点击小齿轮图标进入设置界面,选择插件菜单项,再选择从 zip 文件安装,接着选择刚才创建的 kodi jellyfin 网络源:

7.png


在弹出的窗口里选择 repository.jellyfin.kidi.zip,等待执行完成。然后返回到上一级菜单选择从库安装,从弹出的窗口里选择 Kodi jellyfin Addons,安装即可:

7.png


接着会弹出窗口配置插件,这几步一般保持默认选项即可,最后登录Jellfin的服务器,在安装Jellfin过程设置的密码,选择要添加的媒体,进行添加。

最后,等待几秒同步,回到首页,就会看到Jelyyfin的媒体内容。

后续对媒体增删改的过程,主要是通过在Jellyfin端进行,kodi可以设置每次启动自动同步,也可以选择手动的更新。

事实上流媒体功能远不止这些,还可以设置媒体的自动刮削、中文字幕插件等等。有时间再写其他的折腾记录。

/usr/local/sbin 和 /usr/local/bin 是Linux系统中的两个目录,它们的区别如下:

用途

  •  /usr/local/sbin :通常用于存放系统管理员使用的本地可执行程序,这些程序一般是系统管理工具或服务相关的二进制文件,普通用户可能没有执行权限。
  •  /usr/local/bin :用于存放本地安装的可执行程序,供所有用户使用,只要用户有执行权限即可运行其中的程序。

执行权限

  •  /usr/local/sbin :一般只有管理员(root用户)或特定的系统管理用户组才有执行权限,以确保系统管理工具的安全性和稳定性,防止普通用户误操作或滥用。
  •  /usr/local/bin :根据文件的权限设置,普通用户通常也可以有执行权限,方便用户使用本地安装的各种应用程序。

例如,当你在本地安装了一些服务程序,如Nginx服务器,其可执行文件可能会被安装到 /usr/local/sbin 目录,而一些用户级别的工具,如特定的文本处理程序,则可能会被安装到 /usr/local/bin 目录。

在默认情况下, /usr/local/bin 的优先级通常高于 /usr/bin 。

这是因为在Linux系统中, PATH 环境变量中目录的顺序决定了可执行文件的搜索优先级,而 /usr/local/bin 通常在 /usr/bin 之前。当你输入 python3 时,系统会按照 PATH 中目录的顺序依次查找可执行文件,所以会先找到 /usr/local/bin 下的 python3 软链接并执行。

不过, PATH 的设置可能因系统配置和用户自定义而有所不同。如果 /usr/bin 在 PATH 中排在 /usr/local/bin 之前,那么就会先执行 /usr/bin 下的 python3 。你可以通过查看 PATH 环境变量的值来确定具体的搜索顺序,命令为 echo $PATH 。