如何在每次 api 调用时旋转一个 docker 容器?

How can I spin a docker cotainer per api call?

我和我的队友正在开发后端,它将提供在线托管的 ros 凉亭模拟。由于很难在同一台机器上放置多个 ros 运行 实例,我们决定为每个 ros gazebo 实例创建一个容器 运行。但是,是否有任何工具可以编排容器(运行,停止)?这不像 kubernetes 管理容器的风格,而是我需要在每次 api 调用时旋转一个容器。提前致谢!

您可以使用 curl 消费 Docker API。参考文档:https://docs.docker.com/engine/api/sdk/examples/#run-a-container

curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" \
  -d '{"Image": "alpine", "Cmd": ["echo", "hello world"]}' \
  -X POST http://localhost/v1.41/containers/create
 curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/1c6594faf5/start
 curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/1c6594faf5/wait
 curl --unix-socket /var/run/docker.sock "http://localhost/v1.41/containers/1c6594faf5/logs?stdout=1"

其中 v1.41 是 Docker 的 API 版本。要检查你是什么版本 运行 只需执行 docker version

不过,您必须从执行 Docker 进程的主机进行这些调用。如果您需要对主机执行远程调用,您唯一能做的就是编写一个小的可执行文件,它公开一个 Web 界面,您可以使用该界面调用内部 Docker API (https://docs.rs/docker-api/latest/docker_api/)