我正试着做一些微不足道的事情。对于我的dev环境,我希望能够在我的容器中有一个shell,这样我就可以运行像npm或npm这样的命令。
(我不想在构建过程中安装npm模块,因为我希望将它们映射到主机,以便我的编辑器能够在主机上找到它们。我不想在主机上执行npm安装,因为我不希望主机必须安装npm)。
因此,即使在生产容器中,我也会指示我的容器只运行节点,而在我的开发人员容器中,我希望有一个一直在等待的bash。
如果我将entrypoint设置为/bin/bash,容器将立即退出。这意味着我不能再附加到它(因为它停止)和启动它将立即退出它再次。
我尝试编写一个小的.sh来重新循环并启动/bin/bash,但是在我的入口点中使用它会产生一个错误,即使我知道它在容器中,它也找不到.sh文件。
有什么想法吗?
发布于 2017-08-09 06:34:33
您可以使用docker exec在给定容器中运行命令。
# Open an interactive bash shell in my_container
docker exec -it my_container bash或者,您可以使用docker run创建一个新容器来运行给定的命令。
# Create a container with an interactive bash shell
# Delete the container after exiting
docker run -it --rm my_image bash另外,从这个问题上,我感觉到你还在弄清楚Docker是如何工作的,以及如何使用它。我建议使用来自this question的信息来确定当您将入口点设置为/bin/bash时容器为什么退出。找出它为什么不像你期望的那样,将有助于你更好地理解码头工人。
发布于 2017-08-09 07:42:16
我不知道你想运行什么命令,但我猜:
Bash需要一个tty,所以如果您试图在后台运行它而不为它分配一个附加,它将杀死它自己。
如果您想在后台运行bash,请确保为其分配一个tty以便等待。
例如,docker run -d -it ubuntu将在将来可以docker attach的背景下启动bash终端。
https://stackoverflow.com/questions/45582880
复制相似问题