如何编辑在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命令

Interesting Posts