docker安装mtproto及报错解决方案

安装docker:curl -sSL https://get.daocloud.io/docker | sh

给权限:usermod -aG docker 【current_user】

启动:systemctl start docker

验证(未报错即成功):docker ps

安装docker-composer:curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

赋执行权限:chmod +x /usr/local/bin/docker-compose

 

接下来根据官方文档安装:

docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest

docker logs mtproto-proxy

 

结果报错:

 

解决方案:

命令换成:docker run --ulimit nofile=90000:90000 -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest

或者:docker run --privileged=true -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest

 

原因分析:

大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。

 

最终选择的带指定sceret命令:docker run --ulimit nofile=90000:90000 -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data -e SECRET=00baadf00d15abad1deaa51sbaadcafe telegrammessenger/proxy:latest

 

ps:

secret: 用户密钥。必须为 32 个字符,仅可包含09af之间的字符,可以用openssl rand -hex 16命令生成

posted @ 2018-09-03 19:17  邀魂斩月  阅读(1099)  评论(0编辑  收藏  举报