让docker工作在守护进程模式下的tahoe-lafs存储节点?

现在,我的工作stream程(个人项目,但与朋友分享,我想简化它),我有以下步骤:1. docker run -it -p 3456:3456 -p 39499:39499 maccam912/tahoe-node /bin/bash 2.在tahoe-run.sh ,运行tahoe-run.sh脚本,它将执行第一次configuration,或者如果不是第一次运行,就运行tahoe服务。

我的问题是我如何简化这个。 以下几点具体说明:

我想告诉docker运行容器,让它在后台做它的事情。 如果我通过用-dreplace-it改变它,我知道会让我更接近,但是当我像上面的工作stream程那样执行docker ps时,似乎永远不会留下任何东西,然后我用CTRL + P ,CTRL + Q。

我需要-p这些端口吗? 我EXPOSE它们放在Dockerfile中。 另外,由于它们被直接映射到容器中的同一个端口,我需要每次写入两次吗? 这些港口是什么容器正在使用和外界期望能够用来连接到塔霍“服务器”。

我怎么能得到这个工作,所以,而不是运行/bin/bash我马上运行/tahoe-run.sh

如果端口映射的东西没有必要的话,我的完美命令看起来像是docker run -d maccam912/tahoe-node /tahoe-run.sh 。 最终的目标是让容器在后台运行, tahoe-run.sh一个“永远”运行的服务器。

让我知道,如果我能澄清任何事情,或者如果有一个更简单的方法来做到这一点。 随意看看我的Dockerfile,并提出任何build议,如果它可以简化的事情,但这个项目是故意遵循易用性(希望得到的事情下降到1命令)的职责分工,build议。

我相信我明白了:

只有-d指定的问题是只要给出的命令返回/退出,容器就停止运行。 我的解决scheme是用&结束最后一行,而让脚本挂起而不退出。

至于端口,Dockerfile中的EXPOSE只不过是让这些端口可用于主机,而不是像服务器那样需要远程机器。 -p仍然是必要的。 因为指定只有一个端口将映射该端口到容器中随机的高编号端口,所以需要加倍端口(in:out)。

请纠正我,如果我错了任何这一点,但在这种情况下,最好的解决办法是修改我的脚本,并将使用docker run -d -p 3456:3456 -p 39499:39499 maccam912/tahoe-node /tahoe-run.sh ,新脚本将使其挂起,容器运行。