如何编辑在cloudify运行的Docker容器中自动运行命令的蓝图
我想用cloudify方式运行RYU控制器的docker容器。 我已经写了一个蓝图文件,我可以创build相关的部署,并最终启动docker容器。
问题是,控制器(在docker容器内)需要实现一个脚本来运行,但我不知道如何修改蓝图文件来自动运行脚本。 每次,我都必须inputdocker exec CONTAINER ryu-manager /path/simple_switch.py
作为目标。
那么谁也不知道应该把这个命令放在蓝图上。 我试图将其纳入
interfaces: cloudify.interfaces.lifecycle: create: implementation: docker.docker_plugin.tasks.create_container inputs: params: ports: - { get_input: docker_port } stdin_open: true tty: true command: /bin/bash start: implementation: docker.docker_plugin.tasks.start inputs: params: port_bindings: { get_input: container_port_binding } command: docker exec ryu ryu-manager /ryu/ryu/app/simple_switch.py # here ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
但收到意外参数的错误。
感谢您的时间,任何意见将不胜感激〜
或者让我这样做,如果有人知道,cloudify蓝图中的哪一部分与docker docker exec
匹配?
我使用Cloudify很多,我使用Docker很多。 Docker插件是一种“很高兴”,但它确实没有必要。 您可以从Cloudify脚本插件的内部运行诸如“docker exec”和“docker run”之类的命令,并获得相同的结果,并且不需要找出用于使用Docker的不同界面。
例如,如果我有这个cloudify蓝图(简化):
yaml node_templates: my_app: type: cloudify.nodes.SoftwareComponent interfaces: cloudify.interfaces.lifecycle: create: implementation: scripts/create.sh start: implementation: scripts/start.sh relationships: - type: cloudify.relationships.depends_on target: vm
我可以调用这样的脚本:
脚本/ create.sh:
docker run -d ryu
脚本/ start.sh
docker exec -it ryu ryu-manager /ryu/ryu/app/simple_switch.py
在我回答之前,我没有使用cloudify的经验,但是我已经查看了文档,看看它是什么。 这里是我的指针给你。
首先,我在下面的URL查看docker插件
https://github.com/cloudify-cosmo/cloudify-docker-plugin/blob/master/docker_plugin/tasks.py
而且它没有任何执行语句。 所以你应该从创build和开始生命周期中删除command
。 这样做将确保默认的图像命令运行。
现在你的任务是在容器内执行一个额外的命令。 由于docker插件不支持该操作,所以最好的方法是获取新创build的容器的容器ID。 这应该可以使用一些输出参数捕获
现在,您要在本地机器或安装了docker的远程机器上执行命令。 这可以设置为另一个生命周期,该生命周期从创build的容器中获取ID,然后在该主要docker exec <ID> ryu-manager /ryu/ryu/app/simple_switch.py
主机上执行docker exec <ID> ryu-manager /ryu/ryu/app/simple_switch.py
命令