[Feature] 使用 docker 运行实例时,允许添加额外参数
前言
在 docker 中运行实例固然是一种隔离主机保证安全、便于控制实例资源的好方法。先前各位开发者在实例 docker 设置页面添加了很多自定义选择,包括但不限于开发端口、设置环境变量、分配资源等。 但是我认为这还不够完善,观察到每次运行实例时会单独创建一个容器,在实例关闭后会销毁容器,所以容器的固有设置项(如桥接的ip地址)会变化。
建议
一般来说,正常使用 docker 创建容器时可以附加上 --ip x.x.x.x 来指定ip,便于统一管理,但是mcs并未提供这个设置项。
考虑到这个设置项不常用,而且 docker 参数比较多(如果使用的是用户自定义的镜像那设置项更多),我希望再添加两个设置项:1、docker OPTIONS (容器选项)2、image COMMAND(镜像参数)。 以便于增加更多容器管理的可能和高度自定义性。
开发建议
前者设置项形式参考已有的“环境变量”设置,后者直接使用文本框获取输入。(前者格式固定,但是后者不一定,因为镜像有可能是用户自定义的)
附: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
MCSM不是使用shell命令启动的Docker镜像,而是使用了node模块。因此,无法提供shell启动参数。
你好,我粗略的看了一下mcsm的代码,因为没接触过 node 结合了 gpt 的回答,对我的 feature 提出如下修改:
您的意思是程序调用的 node 中 docker.createContainer 函数进行创建 docker ,其 docker options 是以字典的显示传递的,所以不方便与 shell 对应。
但是 image commons 可以通过简单的文本处理进行自定义:
虽然如此,我仍然希望可以自定义传递的 considerOptions ,签端可以通过 json 数据传递 considerOptions ,后端讲原有的 considerOptions 与前端传递的数据进行合并,在传递给 createContainer 方法创建容器。 或者一开始就直接把 considerOptions 所有的内容显示在前端,用户修改什么内容,前端试试修改 considerOptions (类似于代码生成),最终直接传递 considerOptions 给后端。 考虑到是否增加安全性问题,对于是否进行设计,请贵项目开发者斟酌 而 image command 可以通过简单的文本分割实现。
要不高级一点,我们写个模板吧。
参数模板,支持插入一些变量这样。
嗯,具体看您的代码实现了。非常期待更新。支持!
我不会有空的我在外面玩。你踢踢双羽吧。或者自己做。
好的,不过我不认识双羽 (๑•́ ₃ •̀๑) 粗略看了一下,mcsm还有下述至少25配置项未完善,我觉得可以将其放到设置项中:
-
--domainname -
--env-file -
--label -
--label-file -
--add-host -
--dns -
--dns-search -
--memory-swap -
--memory-reservation -
--kernel-memory -
--restart -
--cpu-shares -
--device -
--privileged -
--log-driver -
--log-opt -
--security-opt -
--sysctl -
--ulimit -
--read-only -
--cap-add -
--cap-drop -
--extra-host -
--user -
--ip
我有空的话我自行研究一下,如果某位开发者准备开发了,请在下面回复一下。
owner @unitwk
这个优先级较低,目前没有开发这个功能的计划,后续视情况决定是否开发。