docker封装python的OPCUA客户端镜像

确保虚拟机已经连接外网,打开超级终端,下载continuumio/anaconda3镜像

docker pull continuumio/anaconda3

创建一个空文件夹,在这个文件夹下面创建两个文件Dockerfile和main.py
在这里插入图片描述

编辑Dockerfile内容如下:

FROM continuumio/anaconda3:latest
ADD main.py /

RUN pip install paho-mqtt
RUN pip install freeopcua
RUN pip install opcua-client

CMD ["python","-u","./main.py"]

编辑main.py内容如下:

from opcua import Client
from opcua import ua
import time
class SubHandler(object):
    def data_change(self, handle, node, val, attr):
        print("Python: New data change event", handle, node, val, attr)
client = Client("opc.tcp://192.168.224.157:4840/")
client.connect()
objects = client.get_objects_node()
root = client.get_root_node()
#myvar = root.get_child(["0:Objects","2:DeviceSet","3:test","3:DataBlocksGlobal","3:db1","3:tags","3:0"])
myvar = client.get_node("ns=2;i=14")
#myvar = client.get_node("ns=5;s=MotionDeviceSystem.ProcessData.System.$CONST_VEL")
#myvar = client.get_node('ns=5;s=MotionDeviceSystem.Controllers.Controller_1.ParameterSet.CurrentProjectDescription')
#myvar = client.get_node('ns=3;s="clocl0.5hz"."tags"[0]')
#var = client.get_node('ns=3;s="Tag_1"')
handler = SubHandler()
sub = client.create_subscription(500, handler)
sub.subscribe_data_change(myvar)
time.sleep(100000)
client.disconnect()

关于OPC UA服务器配置和客户端填写的IP和端口,Node地址请根据实际情况自行修改,切忌使用127.0.0.1作为连接OPC UA服务器IP地址。
在这个文件夹目录下,编译出一个新的image镜像,名字叫edgebox,版本为0.1。注意指令末尾的点别丢了,代表当前目录下找dock配置文件Dockerfile
docker build -t edgebox:0.1 .
等待编译完成,使用指令查看新生成的镜像
docker images
运行opc ua客户端,从opc ua服务器匿名订阅一个变量
docker run -it edgebox:0.1
参考常用指令
查看所有创建的容器
docker container ls -a
查看所有docker容器进程
docker ps
删除image镜像
docker rmi 镜像名或ID
删除所有docker容器
sudo docker rm $(sudo docker ps -a -q)
删除docker容器
docker container rm 容器名或ID

猜你喜欢

转载自blog.csdn.net/weloveut/article/details/108200912