首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置带有等待bash的码头容器以安装npm模块

设置带有等待bash的码头容器以安装npm模块
EN

Stack Overflow用户
提问于 2017-08-09 06:14:36
回答 2查看 1.8K关注 0票数 1

我正试着做一些微不足道的事情。对于我的dev环境,我希望能够在我的容器中有一个shell,这样我就可以运行像npm或npm这样的命令。

(我不想在构建过程中安装npm模块,因为我希望将它们映射到主机,以便我的编辑器能够在主机上找到它们。我不想在主机上执行npm安装,因为我不希望主机必须安装npm)。

因此,即使在生产容器中,我也会指示我的容器只运行节点,而在我的开发人员容器中,我希望有一个一直在等待的bash。

如果我将entrypoint设置为/bin/bash,容器将立即退出。这意味着我不能再附加到它(因为它停止)和启动它将立即退出它再次。

我尝试编写一个小的.sh来重新循环并启动/bin/bash,但是在我的入口点中使用它会产生一个错误,即使我知道它在容器中,它也找不到.sh文件。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2017-08-09 06:34:33

您可以使用docker exec在给定容器中运行命令。

代码语言:javascript
运行
复制
# Open an interactive bash shell in my_container
docker exec -it my_container bash

或者,您可以使用docker run创建一个新容器来运行给定的命令。

代码语言:javascript
运行
复制
# 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时容器为什么退出。找出它为什么不像你期望的那样,将有助于你更好地理解码头工人。

票数 1
EN

Stack Overflow用户

发布于 2017-08-09 07:42:16

我不知道你想运行什么命令,但我猜:

Bash需要一个tty,所以如果您试图在后台运行它而不为它分配一个附加,它将杀死它自己。

如果您想在后台运行bash,请确保为其分配一个tty以便等待。

例如,docker run -d -it ubuntu将在将来可以docker attach的背景下启动bash终端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45582880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档