使用Docker搭建EPICS的IOC记录
阅读原文时间:2023年07月08日阅读:2

一直在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和其他主机联网!!宿主机可以是虚拟机了