使用docker运行mediamtx

文章目录

  • 前言
  • 一、安装docker
    • 1、安装docker
    • 2、免sudo使用docker
    • 3、更换镜像源
  • 二、创建ubuntu容器并安装mediamtx且自启动
    • 1、下载解压并配置mediamtx
    • 2、创建mediamtx-start.sh文件作为mediamtx启动文件
    • 3、创建容器
  • 三、安装ffmpeg
  • 总结


前言

mediamtx官方作者提供了docker的镜像,如下图,但是现在想要使用ffmpeg+RPI的版本无法下载,本文介绍使用ubuntu镜像运行mediamtx,开机docker运行时,自启动mediamtx。
使用docker运行mediamtx_第1张图片


一、安装docker

我是在ubuntu18.04上安装的docker

1、安装docker

sudo apt update
sudo apt install docker.io

测试:

sudo docker info

2、免sudo使用docker

cat /etc/group
# 在最下面可以看到docker group
sudo gpasswd -a 用户名 docker
#把用户添加到docker group

执行添加用户到docker组以后需要重启系统重新登录

3、更换镜像源

sudo vim /etc/docker/daemon.json

添加如下内容:(我用的是阿里的,需要自己注册使用自己的地址)

{
  "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}

重启docker

sudo systemctl restart docker

测试:

sudo docker info

可以看到最下面多了镜像

 Registry Mirrors:
  https://xxxxxxx.mirror.aliyuncs.com/

二、创建ubuntu容器并安装mediamtx且自启动

1、下载解压并配置mediamtx

在宿主机的/usr/local/mediamtx的目录下放置mediamtx的安装包,然后解压,并配置好yml文件相关内容。参考:mediamtx使用说明 https://blog.csdn.net/haixiangyun/article/details/132489160

2、创建mediamtx-start.sh文件作为mediamtx启动文件

在/usr/local/mediamtx/目录下

sudo vim mediamtx-start.sh

写入内容:

#!/bin/sh
/usr/local/mediamtx/mediamtx /usr/local/mediamtx/mediamtx.yml

3、创建容器

docker run -d -p 8889:8889 -p 8554:8554 -v /usr/local/mediamtx/:/usr/local/mediamtx/ -v /etc/localtime:/etc/localtime --restart=on-failure --name=ubuntu-mediamtx ubuntu:18.04 bash /usr/local/mediamtx/mediamtx-start.sh
  • -d 在后台运行
  • -p 端口映射,根据实际需求映射,我这儿使用rtsp映射8554;使用webrtc映射8889
  • -v 目录映射,/usr/local/mediamtx/为mediamtx的目录,映射后方便查看,可在本地修改mediamtx配置和查看日志; 映射/etc/localtime为同步时区
  • –restart 重启方式,不设置或者设置为no的话无法开机自启动
  • –name 给容器命名
  • bash /usr/local/mediamtx/mediamtx-start.sh :启动时使用bash命令执行我们创建的.sh文件

三、安装ffmpeg

根据自己的需求如果需要安装ffmpeg,可进入镜像中安装ffmpeg
参考:ubuntu18安装ffmpeg5 https://blog.csdn.net/haixiangyun/article/details/132583757

总结

刚开始想在创建的ubuntu18.04的镜像中使用systemctl做开启自启动mediamtx,但是镜像的目的是隔离,镜像中不支持systemctl,因此可以写启动脚本,在容器运行是执行开启脚本。

你可能感兴趣的:(docker,运维,ubuntu,视频编解码,ffmpeg)