分类 docker相关 下的文章

安装网址:https://hub.docker.com/r/linuxserver/obsidian

官方安装命令:

sudo docker run -d \
--name=obsidian \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-p 3000:3000 \
-p 3001:3001 \
-v /path/to/config:/config \
--shm-size="1gb" \
--restart unless-stopped \
lscr.io/linuxserver/obsidian:latest

增强命令:

sudo docker run -d \
--name=obsidian \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asian/Shanghai \
-e CUSTOM_USER=自定义管理员账号 \
-e PASSWORD=自定义增强密码 \
-e HTTP_PROXY="http://172.17.0.1:7890" \
-e HTTPS_PROXY="http://172.17.0.1:7890" \
-e NO_PROXY="localhost,127.0.0.1" \
-p 3000:3000 \
-p 3001:3001 \
-p 27124:27124 \
-p 27123:27123 \
-v ~/Apps/obsidian-docker/config:/config \
--shm-size="1gb" \
--restart unless-stopped \
lscr.io/linuxserver/obsidian:latest

出现问题的解决

这样安装obsidian之后,在web端无法对于valt无法操作,原理及解决办法为:
1、修复共享目录读写权限
sudo chown -R qianlong:qianlong /opt/obsidian-share
sudo chmod -R 755 /opt/obsidian-share
2、OpenClaw默认限制文件读写,Obsidian技能必须放开权限:

开启完整文件工具权限

openclaw config set tools.profile full

重启网关生效

sudo systemctl restart openclaw-gateway

项目地址:https://github.com/JoeanAmier/TikTokDownloader
我的目的是使用docker来运行,避免污染了本地环境。在使用过程中有一些心得,写出来,存档
Docker 容器

获取镜像
    方式一:使用 Dockerfile 文件构建镜像
    方式二:使用 docker pull joeanamier/tiktok-downloader 命令拉取镜像
    方式三:使用 docker pull ghcr.io/joeanamier/tiktok-downloader 命令拉取镜像
创建容器:docker run --name 容器名称(可选) -p 主机端口号:5555 -v tiktok_downloader_volume:/app/Volume -it <镜像名称>

注意:此处的 <镜像名称> 需与您在第一步中使用的镜像名称保持一致(例如 joeanamier/tiktok-downloader 或 ghcr.io/joeanamier/tiktok-downloader)
运行容器
    启动容器:docker start -i 容器名称/容器 ID
    重启容器:docker restart -i 容器名称/容器 ID

Docker 容器无法直接访问宿主机的文件系统,部分功能不可用,例如:从浏览器读取 Cookie;其他功能如有异常请反馈!

心得:使用该方法前,

首先,一键安装docker

其次,要让docker能访问外网。否则docker拉取不到该镜像

再次,由于拉取的镜像内部没有安装ffmpeg所以无法下载直播流,还需要重新封装镜像,把ffmpeg安装好之后再封装成新镜像。

自己写一个只有几行代码的 Dockerfile,以你下载的镜像作为基础镜像(FROM)来构建:

在你的电脑上新建一个空文件夹douyindownloader-v2,在里面创建一个名为 Dockerfile 的文件。

写入以下内容:
Dockerfile

# FROM 后面填你下载的原镜像名字

FROM joeanamier/tiktok-downloader:latest

追加安装 ffmpeg(以 Debian/Ubuntu 系统为例)

USER root
RUN apt-get update && apt-get install -y ffmpeg && rm -rf /var/lib/apt/lists/*

在该文件夹下打开终端,运行构建命令:
Bash

docker build -t my-tiktok-downloader:v2 .

再次,创建容器

sudo docker run --name doyindownloaderv2 -p 5556:5555 -v douyin_downloader_volume:/app/Volume -it my-tiktok-downloader:v2

然后,设置coockie。

由于是在docker中运行,无法直接获取到cookie需要将获取的cookie写到配置文件中
配置文件的位置:sudo vi /var/lib/docker/volumes/douyin_downloader_volume/_data/settings.json
cookie的获取:在 筛选器 输入框输入 cookie-name:odin_tt
将该值保存到settings.json的cookie字段中。

如果你使用的是从网上直接 docker pull 下载的第三方现成镜像,并且你没有项目的源码(没有 Dockerfile),只是想在这个现成的镜像基础上追加安装 ffmpeg 并重新封装,你可以通过 基于现有容器进行提交 (docker commit) 的方式来实现。

以下是完整的操作步骤:
第一步:用交互模式启动你下载的镜像

首先,运行你下载的镜像,并直接进入它的内部终端(命令行)。
Bash

假设你下载的镜像名叫 initial-downloader:latest

docker run -it --name temp_container initial-downloader:latest /bin/bash

如果报错说找不到 /bin/bash,请把命令最后的 /bin/bash 换成 /bin/sh。
第二步:在容器内部安装 ffmpeg

成功进入容器的黑色命令行后,根据这个镜像底层的系统类型,执行安装命令:

如果底层是 Ubuntu / Debian 系统(最常见):
Bash

apt-get update && apt-get install -y ffmpeg

如果底层是 Alpine 系统(精简版):
Bash

apk update && apk add --no-cache ffmpeg

安装完成后,你可以输入 ffmpeg -version 验证是否安装成功。确认无误后,输入 exit 退出容器。
第三步:把刚刚修改的容器“封装”成新镜像 (docker commit)

虽然你退出了容器,但刚才的修改还在那个名为 temp_container 的容器里。现在我们要把它打包(封装)成一个新的镜像:
Bash

docker commit temp_container my-tiktok-downloader:v2

temp_container:你刚才运行并修改的容器名字。

my-tiktok-downloader:v2:你封装后的新镜像名称和版本号(可以自定义)。

封装完成后,你可以运行 docker rm temp_container 把临时的老容器删掉,释放空间。
第四步:运行新封装好的镜像

现在你可以使用新生成的、自带 ffmpeg 的镜像来正常下载直播了。记得挂载本地目录以保存下载的视频:
Bash

docker run -it --name tiktok_app_final -v $(pwd)/downloads:/app/downloads my-tiktok-downloader:v2

(注意:如果你在 Windows 的 CMD 环境下,请把 $(pwd) 换成 %cd%)
💡 进阶更优雅的方法(编写自定义 Dockerfile)

虽然上面的 docker commit 很方便,但它属于“黑盒封装”,以后你很难知道镜像里到底改了什么。更推荐的做法是自己写一个只有几行代码的 Dockerfile,以你下载的镜像作为基础镜像(FROM)来构建:

在你的电脑上新建一个空文件夹,在里面创建一个名为 Dockerfile 的文件。

写入以下内容:
Dockerfile

# FROM 后面填你下载的原镜像名字
FROM initial-downloader:latest

# 追加安装 ffmpeg(以 Debian/Ubuntu 系统为例)
USER root
RUN apt-get update && apt-get install -y ffmpeg && rm -rf /var/lib/apt/lists/*

在该文件夹下打开终端,运行构建命令:
Bash

docker build -t my-tiktok-downloader:v2 .

这种方法生成的镜像更干净,也更方便以后升级或分享给别人!
第三步:运行新生成的 Docker 镜像

构建完成后,你需要使用 docker run 命令来启动这个新镜像。根据你这个抖音下载器的特性(需要挂载目录保存下载的视频、需要传入参数等),运行命令通常如下:
交互式运行(适合手动选择菜单):
Bash

docker run -it --name my_tiktok_app_v2 -v $(pwd)/downloads:/app/downloads tiktok-downloader:v2

参数解释:

-it:让你能够和容器的命令行进行交互(输入序号、粘贴 Cookie 等)。

--name my_tiktok_app_v2:给这个运行的容器起个名字,方便以后管理。

-v $(pwd)/downloads:/app/downloads:目录挂载(非常重要)。把当前目录下的 downloads 文件夹映射到容器内,这样容器下载好的直播视频才会真正保存在你的本地硬盘上,否则容器一关视频就丢了。(Windows 的 CMD 环境下把 $(pwd) 换成 %cd%)

tiktok-downloader:v2:指定运行你刚刚构建好的新镜像。

验证新镜像中是否有 ffmpeg

如果你想确认新镜像里到底有没有成功安装,可以单独运行下面这行命令。如果打印出了 ffmpeg 的版本信息,说明完全成功:
Bash

docker run --rm tiktok-downloader:v2 ffmpeg -version

(注:--rm 表示运行完这个查看命令后自动销毁这个临时容器,不占空间)

在Docker中,可以使用以下步骤彻底删除镜像:

停止相关容器

如果有正在运行的容器使用了要删除的镜像,需要先停止这些容器。可以使用以下命令来停止容器:

bash

docker stop <容器名称或容器ID>
 

删除容器(可选)

停止容器后,如果确定不再需要该容器,可以将其删除。命令如下:

bash

docker rm <容器名称或容器ID>
 

删除镜像

使用  docker rmi  命令来删除镜像,命令格式为  docker rmi <镜像名称或镜像ID> 。例如:

bash

docker rmi ubuntu:latest
 

如果要删除多个镜像,可以在命令中列出多个镜像名称或ID,用空格分隔。

清理未使用的镜像和容器(可选)

可以使用  docker system prune  命令来清理所有未使用的镜像、容器、网络和卷。该命令会提示确认是否执行,输入  y  即可。

通过以上步骤,就可以彻底删除Docker镜像。在删除镜像之前,需要确保不再需要该镜像以及依赖它的容器,以免造成数据丢失或业务中断。

1. 确认 Docker 使用了代理

你 curl 用的是代理:

Uses proxy env variable https_proxy == 'http://192.168.222.155:17890'
但是 Docker 默认不会继承系统环境变量,你需要专门配置 Docker 代理。

设置 Docker 的代理环境变量:
创建目录(如果不存在):

sudo mkdir -p /etc/systemd/system/docker.service.d
然后创建文件:

sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
填入以下内容(根据你的代理地址替换):

[Service]
Environment="HTTP_PROXY=http://192.168.222.155:17890"
Environment="HTTPS_PROXY=http://192.168.222.155:17890"
Environment="NO_PROXY=localhost,127.0.0.1,::1"
保存退出后,刷新 systemd 并重启 Docker:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
然后测试拉取镜像:

docker pull hello-world

2. Docker 登录(可选但推荐)

有些镜像需要认证,比如你反复请求后可能会被限速。

执行:

docker login
输入 Docker Hub 的用户名和密码或 token。

3. 国内镜像加速器(推荐)

为避免 Docker Hub 网络不稳定的问题,可以继续使用国内镜像源。

编辑 /etc/docker/daemon.json:

{
"registry-mirrors": [

"https://mirror.baidubce.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"

]
}
然后重启 Docker:

sudo systemctl daemon-reexec
sudo systemctl restart docker