MCSManager icon indicating copy to clipboard operation
MCSManager copied to clipboard

[Feature] 使用 docker 运行实例时,允许添加额外参数

Open wojiaoyishang opened this issue 1 year ago • 8 comments

前言

在 docker 中运行实例固然是一种隔离主机保证安全、便于控制实例资源的好方法。先前各位开发者在实例 docker 设置页面添加了很多自定义选择,包括但不限于开发端口、设置环境变量、分配资源等。 但是我认为这还不够完善,观察到每次运行实例时会单独创建一个容器,在实例关闭后会销毁容器,所以容器的固有设置项(如桥接的ip地址)会变化。

建议

一般来说,正常使用 docker 创建容器时可以附加上 --ip x.x.x.x 来指定ip,便于统一管理,但是mcs并未提供这个设置项。

考虑到这个设置项不常用,而且 docker 参数比较多(如果使用的是用户自定义的镜像那设置项更多),我希望再添加两个设置项:1、docker OPTIONS (容器选项)2、image COMMAND(镜像参数)。 以便于增加更多容器管理的可能和高度自定义性。

开发建议

前者设置项形式参考已有的“环境变量”设置,后者直接使用文本框获取输入。(前者格式固定,但是后者不一定,因为镜像有可能是用户自定义的)

附: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

wojiaoyishang avatar Jun 15 '24 15:06 wojiaoyishang

MCSM不是使用shell命令启动的Docker镜像,而是使用了node模块。因此,无法提供shell启动参数。

huangsijun17 avatar Jun 15 '24 15:06 huangsijun17

你好,我粗略的看了一下mcsm的代码,因为没接触过 node 结合了 gpt 的回答,对我的 feature 提出如下修改:

您的意思是程序调用的 node 中 docker.createContainer 函数进行创建 docker ,其 docker options 是以字典的显示传递的,所以不方便与 shell 对应。

Screenshot_20240615_233743_com microsoft emmx

但是 image commons 可以通过简单的文本处理进行自定义:

Screenshot_20240615_234107_com openai chatgpt

虽然如此,我仍然希望可以自定义传递的 considerOptions ,签端可以通过 json 数据传递 considerOptions ,后端讲原有的 considerOptions 与前端传递的数据进行合并,在传递给 createContainer 方法创建容器。 或者一开始就直接把 considerOptions 所有的内容显示在前端,用户修改什么内容,前端试试修改 considerOptions (类似于代码生成),最终直接传递 considerOptions 给后端。 考虑到是否增加安全性问题,对于是否进行设计,请贵项目开发者斟酌 而 image command 可以通过简单的文本分割实现。

wojiaoyishang avatar Jun 15 '24 15:06 wojiaoyishang

要不高级一点,我们写个模板吧。

参数模板,支持插入一些变量这样。

Bluemangoo avatar Jun 15 '24 15:06 Bluemangoo

嗯,具体看您的代码实现了。非常期待更新。支持!

wojiaoyishang avatar Jun 15 '24 23:06 wojiaoyishang

我不会有空的我在外面玩。你踢踢双羽吧。或者自己做。

Bluemangoo avatar Jun 16 '24 01:06 Bluemangoo

好的,不过我不认识双羽 (๑•́ ₃ •̀๑) 粗略看了一下,mcsm还有下述至少25配置项未完善,我觉得可以将其放到设置项中:

  1. --domainname
  2. --env-file
  3. --label
  4. --label-file
  5. --add-host
  6. --dns
  7. --dns-search
  8. --memory-swap
  9. --memory-reservation
  10. --kernel-memory
  11. --restart
  12. --cpu-shares
  13. --device
  14. --privileged
  15. --log-driver
  16. --log-opt
  17. --security-opt
  18. --sysctl
  19. --ulimit
  20. --read-only
  21. --cap-add
  22. --cap-drop
  23. --extra-host
  24. --user
  25. --ip

我有空的话我自行研究一下,如果某位开发者准备开发了,请在下面回复一下。

wojiaoyishang avatar Jun 16 '24 01:06 wojiaoyishang

owner @unitwk

Bluemangoo avatar Jun 16 '24 01:06 Bluemangoo

这个优先级较低,目前没有开发这个功能的计划,后续视情况决定是否开发。

yumao233 avatar Jun 16 '24 14:06 yumao233