如何从一个docker容器到另一个docker容器执行命令

2024-02-17

我正在创建一个应用程序,允许用户上传视频文件,然后对这些文件进行一些处理。

我有两个容器。

  1. Nginx为网站提供服务的容器,用户可以在其中上传视频文件。
  2. 视频处理容器具有FFmpeg并安装了一些其他处理工具。

我想要实现什么。我需要容器 1 才能在容器 2 上运行 bash 脚本。

据我所知,一种可能性是让它们通过 API 通过 HTTP 进行通信。但随后我需要在容器 2 中安装一个 Web 服务器并编写一个 API,这似乎有点大材小用。 我只想执行 bash 脚本。

有什么建议么?


您有几个选择,但首先想到的两个是:

  1. 在容器1中,安装Docker CLI并绑定挂载/var/run/docker.sock(您需要从 启动容器时的主机)。然后,在容器内,您 应该可以使用docker针对绑定安装的命令 就像您从主机执行它们一样(您也可以 需要chmod容器内的套接字允许非 root 用户执行此操作。
  2. 你可以安装SSHD在容器 2 上,然后ssh从容器 1 中进入并运行脚本。这样做的优点是,您不需要在容器内部进行任何更改,因为它们是在 Docker 中运行而不是在裸机中运行。缺点是您需要将 SSHD 设置添加到 Dockerfile 或启动脚本中。

我能想到的大多数其他想法只是选项(2)的变体,用其他一些工具代替了 SSHD。

另请注意,Docker 网络有点奇怪(至少在 Mac 主机上),因此您需要确保容器使用相同的 docker 网络并且能够通过它进行通信。

Warning:

完全清楚的是,do not在实验室或严格控制的开发环境之外使用选项 1。它采用一个安全套接字,该套接字对 Docker 运行时具有完全权限host,并从 a 授予未经检查的访问权限容器。这样做可以轻松地突破 Docker 沙箱并危害主机系统。我认为它唯一可以接受的地方是作为完整堆栈集成测试设置的一部分,该设置仅由开发人员临时运行。在某些非常特定的情况下,这是一种有用的捷径,但其缺点也不容忽视。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从一个docker容器到另一个docker容器执行命令 的相关文章

随机推荐

  • 表单上所有元素的公共事件

    我想每当表单中任何元素的值发生变化时触发一个公共事件 根据表单元素的值 我想要实现代码 我正在编写下面的代码 但是 onchange 事件在 formid 上不起作用 formid change function code or this
  • 将 ReactforwardRef 与 Redux connect 结合使用

    我有一个正在使用的 React 功能组件forwardRef像这样 const wrapper React forwardRef props ref gt
  • Gradle - Android - 在应用程序审核中导致编译错误 - 放大旧依赖项

    我正在尝试集成 In App Review 但收到此编译错误 Duplicate class com google android play core common IntentSenderForResultStarter found in
  • 如何获取电脑的ID?

    vb net或java中有没有代码可以获取计算机的ID gt gt 我想编写一个可以获取计算机ID的程序 以便像微软那样制作软件许可证 提前致谢 Makara 首先 微软许可不是这样运作的 他们有一把在他们这边生成的钥匙 当他们向您出售该软
  • 如何在其自身事件中释放控件?

    我有一个清单TPanels在 FMX 应用程序中 如果我单击面板 我想释放它 直接在 Onclick 处理程序中释放它们不是正确的方法 因为我遇到了访问冲突 我不想使用windowsmessages 推荐于如何释放其事件处理程序内部的控制权
  • Python 3 中的整数除法 - 带有负数的奇怪结果[重复]

    这个问题在这里已经有答案了 我是Python新手 现在正在学习运算符 我明白 The 运算符用于floating point division and for integer division Example 7 3 2 And 7 3 3
  • 如何从十六进制值识别编码?

    我的网站上有这样显示的文本 o 代替 我从 CMS 中提取了文本并分析了它的十六进制值 正确显示的 有c3 b6 UTF 8 显示不正确的 有6f cc 88 我无法找出这是什么编码 识别编码的好方法是什么 6F是 o 的 UTF 8 AS
  • git中删除多个远程分支

    我有一位团队成员无意中将超过 150 个当地分支机构推送到我们的中央存储库 值得庆幸的是 它们都有相同的前缀 使用该前缀 是否有一个 git 命令或很酷的小 shell 脚本我可以使用它来一次删除所有这些 使用以下命令删除所有分支PREFI
  • 片段间通信适用于嵌套片段吗?

    Android 开发者网站有一个很棒的文章 http developer android com training basics fragments communicating html关于如何使用接口进行通信 A Fragment及其托管
  • 将照片从 Android 应用上传到 Google Cloud Storage/App Engine - 非法字符“_”

    我在将照片从 Android 应用程序上传到 GCS 时遇到问题 我可以上传文本文件 但不能上传照片 我尝试过各种 mime 类型以及不同的 Base64 编码方法 decodeBase64 encodeBase64URLSafeStrin
  • Asp.net Core 2.0 与 .net Framework 4.6.1 - 找不到参考程序集 '.NETFramework/v4.6.1/Microsoft.CSharp.dll

    我最近将我的项目从asp net core 1 1升级到asp net core 2 0 并使用 Net Framework 4 6 1 来应用我们 应用程序在本地开发计算机上按预期工作 但是一旦使用 dotnetpublish 命令部署到
  • C# lambda 如何捕获变量

    为什么下面的代码会打印 11 两次 int i 10 Action fn1 gt Console WriteLine i i 11 Action fn2 gt Console WriteLine i fn1 fn2 输出 11 11 根据这
  • 无法生成时间戳:连接重置

    编译 adobe air 应用程序时出现以下错误 java Could not generate timestamp Connection reset 该应用程序几天前编译得很好 我不知道计算机的配置有任何变化 我将以下参数添加到 buil
  • Android BroadcastReceiver onReceive() 在 android 5.1.1 上调用两次,即使在一次注册之后

    我无法弄清楚下面的代码有什么问题 我还检查了两次注册接收者的情况 但事实也并非如此 或者可能是我遗漏了一些东西 请帮忙 我真的很需要它 import android app Service import android content Br
  • 如何使用php数组将sql查询结果转换为数据透视表?

    我正在尝试为图书馆预订系统创建一些统计数据 我的 sql 查询的结果类似于以下结构 total no students department property month 241 Physics undergraduate Nov 236
  • bash 提示符换行损坏

    我正在 OsX 上自定义 bash 提示符 以包含 git 分支以及分支状态的一些标记 这会打破换行 我知道我必须添加 和 来防止这个问题 https stackoverflow com questions 105349 bash prom
  • jquery:秒表

    我正在使用stopwatch我在这里找到的代码 http www kellishaver com projects stopwatch http www kellishaver com projects stopwatch function
  • 查找字符串中字符的所有位置

    我正在尝试使用非常基本的技能集查找 python 字符串中字符的所有索引号 例如 如果我有字符串 Apples are Excellent 并且我想找到字符串中 a 所在的位置 我理想的输出是 0 7 14 19 这些是字符串中出现 a 的
  • 无法再次绑定多部分标识符

    我正在尝试创建一个这样的存储过程 CREATE PROCEDURE dbo SP Name ID varchar 50 URL varchar 256 AS SELECT DISTINCT Table1 CID Table2 Name Ta
  • 如何从一个docker容器到另一个docker容器执行命令

    我正在创建一个应用程序 允许用户上传视频文件 然后对这些文件进行一些处理 我有两个容器 Nginx为网站提供服务的容器 用户可以在其中上传视频文件 视频处理容器具有FFmpeg并安装了一些其他处理工具 我想要实现什么 我需要容器 1 才能在