使用Docker搭建EPICS的IOC记录
一直在centos使用KVM跑虚拟机搭建IOC,后来又使用zstack,web环境下管理虚拟机就更方便了。
最近电子源系统需要把束测系统跑起来,空间比较局促,不好放置服务器机柜。想着用一台工控机跑起来,就尝试用用docker,开始一直在windows下直接装docker,docker相关网络设置各种不顺利,折腾了好几天又找控制组的小兄弟帮忙,还是不行,就放弃在windows下直接装docker了。后来使用小兄弟推荐的vmware环境虚拟机,建虚拟机时设置网络桥接时也不顺利,之后还是改回比较熟悉的virtualbox,之后在virtualbox下建centos虚拟机,在虚拟机上安装docker,因为需要跑好几个IOC,不好用端口映射的方式搞,需要跑IOC的容器能和宿主虚拟机以及其他的opi等子网的机器和示波器摄像头等设备同一网段,按这里的指导设置:
https://blog.csdn.net/kongxx/article/details/73477932
http://www.louisvv.com/archives/695.html
macvlan,pipework各种尝试也是不顺利,容器ping不通子网其他设备。后来看上面文章后面的评论,别人在虚拟机上跑docker也是这样,裸机直接centos装docker就成功了。之后用另外一台工控机直接装centos7之后就跑通了。 暑假这段时间终于调通了用docker做以前虚拟机做的事了
大致说说过程:
一台3网口的工控机,装好centos7 x86_64后,把两个网口做成一个主备bond,再桥接一下,接子网,做bond的好处是任何一个网卡坏了或网线断线,另一个网口马上接替。
之后装好docker,主要参考:
https://www.runoob.com/docker/centos-docker-install.html
附跑IOC容器的命令:
docker run -dit --restart=always --name IOCflag1 --privileged=true --network=none -v /opt/epics:/opt/epics 202.38.77.127:8082/lup/centos7ioc /usr/sbin/init
以及/etc/rc.local里的命令:
brctl addif br0 bond0
brctl addif br0 eno2
brctl addif br0 eno3
ip route del default;ip route add default via 202.38.77.254 dev enp0s31f6
pipework br0 IOCflag1 192.168.4.116/24@192.168.4.101
pipework br0 IOCflag2 192.168.4.117/24@192.168.4.101
pipework br0 IOCflag3 192.168.4.118/24@192.168.4.101
pipework br0 IOCict 192.168.4.119/24@192.168.4.101
还有:
[beam@localhost ~]$ cat /etc/docker/daemon.json
{
"dns" : [
"202.38.64.17",
"202.38.64.56"],
"registry-mirrors":[
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"https://reg-mirror.qiniu.com/",
"http://hub-mirror.c.163.com"],
"insecure-registries": [
"http://202.38.77.127:8082"]
}
这样开机自动就可以启动起IOC了,工控机跑4个IOC的top截图,3个1440*1080分辨率的AravisGigE IOC和一个示波器的IOC:
看样子CPU占了80%左右,如果开4个IOC虚拟机估计就跑不动了。
https://blog.csdn.net/yjk13703623757/article/details/80458469
https://blog.csdn.net/qq_38417808/article/details/83000799
###################################
附:后来在Zstack的云主机上测试pipework网桥方式分配ip的容器可以独立IP和其他主机联网!!宿主机可以是虚拟机了