在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian

转自https://bbs.hassbian.com/thread-5438-1-1.html

[基础教程] 在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他

 

这两天有童鞋个别有遇到了一些无法访问或者HA自带的homekit无法关联苹果home APP的问题,因为是宿主机是centos7,默认是有个防火墙启动的,对于安全性要求不高的小伙伴,我们可以选择关闭它,当然也有别的方法,这边就不介绍了,因为涉及iptables和firewall的内容太多了...(其实就是懒),现在更新下简单的解决办法,就是停用防火墙(关闭防火墙后,下面添加防火墙允许的端口的配置就不需要添加了)

首先需要停止Docker的容器服务,停止前记得把容器启动设置变更成始终启动,

首先需要停止Docker的容器服务,停止前记得把容器启动设置变更成始终启动,

首先需要停止Docker的容器服务,停止前记得把容器启动设置变更成始终启动,

修改方式有两种:

第一种设置容器自动跟随Docker自动启动的,通过web_UI界面修改:
在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian_第1张图片 
在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian_第2张图片 

第二种方法是通过命令行模式添加,我感觉还是这个逼格比较高

ssh或者其他方法登录到centos7上:

修改前需要先停用容器
修改前需要先停用容器
修改前需要先停用容器

[AppleScript] 纯文本查看 复制代码

?

1

docker stop 容器ID



获取容器ID或者容器名字

[AppleScript] 纯文本查看 复制代码

?

1

docker ps



然后输入

[AppleScript] 纯文本查看 复制代码

?

1

docker container update --restart=always af841557deed


或者

[AppleScript] 纯文本查看 复制代码

?

1

docker container update --restart=always NodeRed



在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian_第3张图片 

然后就好了,保险起见,把你所有的容器都设置一遍...

还有一种不是很推荐的方法,直接修改配置文件!!!修改前需要先关闭容器

[AppleScript] 纯文本查看 复制代码

?

1

docker stop 容器ID



进入文件夹/var/lib/docker/containers/,根据前面查到的容器ID,可以找到对应的配置文件夹
进入对应文件夹找到hostconfig.json并编辑它,也可以修改,这里不说了,看图
在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian_第4张图片 

修改好容器自动跟随Docker自动启动后,就可以停止Docker服务了

[AppleScript] 纯文本查看 复制代码

?

1

service docker stop




然后关闭防火墙

[AppleScript] 纯文本查看 复制代码

?

1

systemctl stop firewalld.service



顺便将防火墙自动启动也关掉

[AppleScript] 纯文本查看 复制代码

?

1

systemctl disable firewalld.service

其实不关闭防护墙更好,只要开启相关端口和在云服务器控制台设置安全组就可以正常访问

设置开放端口:

firewall-cmd --zone=public --add-port=9000/tcp --permanent

重新载入,添加端口后重新载入才能起作用

firewall-cmd --reload

查看9000端口访问权限

firewall-cmd --zone=public --query-port=9000/tcp

关闭9000访问权限

firewall-cmd --zone=public --remove-port=9000/tcp --permanent

如果不行就重启防火墙

启动: systemctl start firewalld

关闭: systemctl stop firewalld

查看状态: systemctl status firewalld 

开机禁用  : systemctl disable firewalld

开机启用  : systemctl enable firewalld

等一会儿就可以访问了,不建议关闭防火墙


如果装了iptables的关闭方法一样

关闭后再次启动Docker后就OK了

可以用docker ps看下容器是否都正常启动了...

更新于20181129
<=======================分割线=======================>

下面是正文


本来我的服务全部都是直接安装在Ubuntu Server中的,近期觉得运行不太稳定(瞎几把折腾),决定将整个系统全部换一下

其实我只是想把论坛当个备忘录,自己忘了以后可以看看
下面的内容一会儿用的是命令行模式,一会儿用的是web UI界面,反正两种都可以...

好了,进入主题

先讲下环境:外部实体服务器为Windows 2016 Server
虚拟化系统为Hyper-y 安装系统为CentOS最小化安装版,选择的CPU是二代,内存4G

 

本帖隐藏的内容

安装完成后,ssh进入系统,先更新下系统

[AppleScript] 纯文本查看 复制代码

?

1

yum update && yum upgrade



'==========================安装docker=========================='

使用yum安装docker

[AppleScript] 纯文本查看 复制代码

?

1

yum -y install docker



启动 Docker 后台服务

[AppleScript] 纯文本查看 复制代码

?

1

service docker start



设置开机自启动

[AppleScript] 纯文本查看 复制代码

?

1

sudo systemctl enable docker



查看Docker版本

[AppleScript] 纯文本查看 复制代码

?

1

docker version



'==========================安装docker可视化UI:Portainer=========================='

可以查询当前有哪些Portainer镜像

[AppleScript] 纯文本查看 复制代码

?

1

docker search portainer



下载镜像

[AppleScript] 纯文本查看 复制代码

?

1

docker pull docker.io/portainer/portainer



运行容器

[AppleScript] 纯文本查看 复制代码

?

1

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

 

参数说明:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;


尝试用浏览器http://{host-ip}:9000访问,不出意外应该能看到了,不过是英文版的...

第一次打开会让你设置密码,用户名是admin,设完密码就能登录进去了。

'==========================安装node-red=========================='

这个会自动下载并安装node-red

[AppleScript] 纯文本查看 复制代码

?

1

docker run -it -p 1880:1880 -v /etc/localtime:/etc/localtime --name mynodered nodered/node-red-docker



容器会自动运行在1880端口,当然你去刚才安装的web UI上刷新下也可以看到
如果按control+c会终止容器,要退出当前容器并保持容器运行,请按control+P 然后control不要松开,再按control+Q
不过就算control+c终止了也没多大问题尝试用浏览器访问http://{host-ip}:1880,就能看到node-red的页面了

命令参考:
重新连接到容器
docker attach mynodered
关闭容器
docker stop mynodered
开启容器
docker start mynodered

更新容器也很简单,三句命令即可
docker pull nodered/node-red-docker
docker stop mynodered
docker start mynodered

如果删除 Containers再重新建立后,启动container的时候出现iptables: No chain/target/match by that name

service docker restart

就可以了


然后我们来升级nodejs,不知道这步需不需要的,反正我是升级了最新版...大家如果用着没问题也可以不升级(最新版强迫症患者
在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian_第5张图片 
在portainer面板中进入命令管理页面,Command使用/bin/bash,User使用root
在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian_第6张图片 

进入容器后输入以下内容

[AppleScript] 纯文本查看 复制代码

?

1

2

3

4

npm cache clean -f

npm install -g n

n latest

node -v



升级成功后关闭即可

然后访问http://{host-ip}:1880可以按照论坛中大神的帖子添加node-red的各种节点

'==========================在docker中安装mqtt=========================='

用Docker安装mosquitto

[AppleScript] 纯文本查看 复制代码

?

1

docker pull eclipse-mosquitto



在CentOS中创建/mosquitto/config/mosquitto.conf,并添加以下指令

[AppleScript] 纯文本查看 复制代码

?

1

2

3

persistence true

persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log



启动容器,查看是否可以正常运行

[AppleScript] 纯文本查看 复制代码

?

1

docker run -it -p 1883:1883 -p 9001:9001 eclipse-mosquitto


跟刚才一样按control+P 然后按 control+Q退出当前容器

查询容器运行的ID

[AppleScript] 纯文本查看 复制代码

?

1

docker ps



再次进入容器

[AppleScript] 纯文本查看 复制代码

?

1

docker exec -it 容器ID /bin/sh



在容器中创建mqtt的账户与密码
在容器中创建mqtt的账户与密码
在容器中创建mqtt的账户与密码
....

[AppleScript] 纯文本查看 复制代码

?

1

2

cd /mosquitto/config/

mosquitto_passwd -c pwfile homeassistant

 

[AppleScript] 纯文本查看 复制代码

?

1

输入两次密码即可exit退出,然后重启Docker容器



centos7防火墙开放1883端口与9001端口,当然你也可以把防火墙关了

[AppleScript] 纯文本查看 复制代码

?

1

2

firewall-cmd --zone=public --add-port=1883/tcp --permanent

firewall-cmd --zone=public --add-port=9001/tcp --permanent



现在可以在node-red创建个mqtt节点测试下...

安装HA啥的应该没啥难度了...

这就不说了哈...



上面的截图貌似也懒得截请大家不要见怪,懒癌晚期...

你可能感兴趣的:(在CentOS中安装Docker-利用Docker安装node-red和mqtt以及其他-转自hassbian)