1 基础知识
正式安装前,我们建议你先熟悉以下章节,
2 最佳实践
2.1 部署前的准备
2.1.1 部署Docker环境
本章使用如下Docker环境部署,参阅本章建议你先搭建以下Docker集群环境并熟悉,
2.1.2 准备系统镜像
In docker01
cd /data/docker/images/ docker load -i debian:8.6.tar docker tag debian:8.6 docker01.cmdschool.org:5000/debian:8.6 docker push docker01.cmdschool.org:5000/debian:8.6 docker image rm debian:8.6
另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,
docker pull debian:8.6 docker save debian:8.6 -o debian:8.6.tar
另外,其他版本请从以下链接下载,
https://hub.docker.com/_/debian
2.2 创建新镜像
2.2.1 创建镜像项目文件夹
mkdir ~/imageProject-Unifi-Video
2.2.2 创建Dockerfile
vim ~/imageProject-Unifi-Video/Dockerfile
加入如下配置,
FROM docker01.cmdschool.org:5000/debian:8.6 MAINTAINER will@cmdschool.org # Config apt source RUN echo 'deb http://mirrors.163.com/debian/ jessie main\n \ deb http://mirrors.163.com/debian-security/ jessie/updates main\n \ deb http://mirrors.163.com/debian/ jessie-updates main\n' \ > /etc/apt/sources.list RUN cat /etc/apt/sources.list RUN apt update # install mongodb openjdk unifi-video RUN apt install -y wget mongodb-server sudo psmisc lsb-release openjdk-7-jre-headless jsvc vim net-tools WORKDIR /root/ RUN wget http://dl.ubnt.com/firmwares/unifi-video/3.5.2/unifi-video_3.5.2~Debian7_amd64.deb RUN dpkg -i unifi-video_3.5.2~Debian7_amd64.deb; apt-get install -f; apt-get clean RUN sed -i 's/ulimit -H -c 200/#ulimit -H -c 200/g' /usr/sbin/unifi-video # config start EXPOSE 7080 6666 1935 7440 7443 7445 7446 7447 CMD ["/sbin/init"]
需要注意的是,
– “FROM”指令声明基于“debian:8.6”镜像打包
– “RUN”指令声明容器环境执行的命令
– “EXPOSE ”指令声明容器使用的端口
– “WORKDIR”指令声明切换容器内部的某个目录
– “CMD”指令声明启动容器执行的启动服务命令
2.2.3 执行打包操作
cd ~/imageProject-Unifi-Video docker build -t build/unifi-video:3.5.2 .
以上“.”指当前目录为编译目录,编译程序会自动加载“Dockerfile”文件定义,可见如下显示,
[...] Step 12/12 : CMD ["/sbin/init"] ---> Using cache ---> c9bbf1147aa9 Successfully built c9bbf1147aa9 Successfully tagged build/unifi-video:3.5.2
完成后,可使用如下命令查看镜像,
docker images
可见如下显示,
REPOSITORY TAG IMAGE ID CREATED SIZE build/unifi-video 3.5.2 c9bbf1147aa9 8 minutes ago 728MB [...]
2.2.4 测试软件运行
docker run -d --privileged=true --name Unifi-Video build/unifi-video:3.5.2
以上运行容器环境后,我们使用以下命令登录容器虚拟机,
docker exec -it `docker container ls | grep 'Unifi-Video' | cut -d" " -f1 ` /bin/bash
可通过如下命令查看倾听的端口,
netstat -anp | egrep "unifi-video|evostreamms" | grep "0.0.0.0:"
可见如下显示,
tcp 0 0 0.0.0.0:7080 0.0.0.0:* LISTEN 145/unifi-video tcp 0 0 127.0.0.1:7081 0.0.0.0:* LISTEN 145/unifi-video tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 285/evostreamms tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN 285/evostreamms tcp 0 0 0.0.0.0:7440 0.0.0.0:* LISTEN 285/evostreamms tcp 0 0 0.0.0.0:7443 0.0.0.0:* LISTEN 145/unifi-video tcp 0 0 0.0.0.0:7445 0.0.0.0:* LISTEN 285/evostreamms tcp 0 0 0.0.0.0:7446 0.0.0.0:* LISTEN 285/evostreamms tcp 0 0 0.0.0.0:7447 0.0.0.0:* LISTEN 285/evostreamms tcp 0 0 127.0.0.1:1112 0.0.0.0:* LISTEN 285/evostreamms udp 0 0 172.17.0.2:51396 0.0.0.0:* 145/unifi-video udp 0 0 0.0.0.0:10001 0.0.0.0:* 145/unifi-video
测试完成后可使用如下命令退出容器虚拟机,
exit
另外,你可以使用如下命令查询当前运行的container,
docker ps -a
可见如下显示,
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b6480ecf46ac build/unifi-video:3.5.2 "/sbin/init" About a minute ago Up About a minute 1935/tcp, 6666/tcp, 7080/tcp, 7440/tcp, 7443/tcp, 7445-7447/tcp Unifi-Video [...]
然后可以使用如下命令停止并删除,
docker container stop b6480ecf46ac docker container rm b6480ecf46ac
2.3 部署服务
本章重点是打包镜像,部署请参阅以下章节,
参阅文档
===============
https://community.ui.com/questions/UniFi-Video-Installation-Scripts-or-UniFi-Lets-Encrypt-or-Ubuntu-16-04-18-04-18-10-19-04-19-10-20-0/c272abf8-7680-4b73-9d10-c876ab86f4c9
https://help.ui.com/hc/en-us/articles/209754018-UniFi-Video-How-to-Install-UFV-version-3-x-on-a-Legacy-airVision-NVR
没有评论