在NodeJS应用中使用Docker容器[已关闭]

0sgqnhkj  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(127)

已关闭,此问题为opinion-based。目前不接受答复。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

2天前关闭。
Improve this question
在NodeJS应用中使用Docker容器有什么推荐或最佳实践吗?
我已经看到了几种不同的方法来访问或使用Node中的容器:

  • 子进程
  • dockerode(npm包)
  • 或其他

我是一个使用Docker的新手,我想让我的Node应用程序能够访问和启动Docker容器,并且正在寻找在NodeJS中使用Docker容器的最佳实践的任何建议?

zbsbpyhn

zbsbpyhn1#

最好的做法是重新构建应用程序,以避免需要管理员级别的Docker守护进程访问权限。启动可以一次性完成您需要的工作的长期运行容器,并通过Docker网络或使用RabbitMQ等消息队列系统与它们进行通信。
尝试直接使用Docker有许多实际问题。如果启动一个新的容器,则需要监控并停止它;如果你的进程在运行容器时失败了,在启动时你需要弄清楚如何从上一次运行中清理。添加硬Docker依赖项会使运行单元测试或手动测试变得困难。当然,最大的问题是Docker中的安全控制很少:你可以操作不属于你的项目的容器,并在新的容器中绑定挂载主机文件系统的任意部分,这意味着Docker成为了一条容易危及整个主机的路径。
如果您必须对Docker守护进程进行特权调用,使用Docker SDK(如dockerode)比将docker作为子进程运行更好。下游用户更容易运行,也更难在shell语法上犯错误(我确实看到了几个允许shell注入攻击尝试运行docker命令的问题,这成为外部攻击者root主机的路径)。

相关问题