如果你使用的是从网上直接 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 表示运行完这个查看命令后自动销毁这个临时容器,不占空间)

标签: none

添加新评论