确保虚拟机已经连接外网,打开超级终端,下载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