Docker 向容器内的应用程序发出命令?

Docker issue commands to an app inside container?

我正在使用 nodeBB 启动服务器,您可以 运行 ./nodebb start 停止您可以 ./nodebb stop。现在我已经 docker 化了它 http://nodebb-francais.readthedocs.org/projects/nodebb/en/latest/installing/docker/nodebb-redis.html 我不确定如何与它互动。

我已经按照步骤"Using docker-machine mac os x"

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis

然后

docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu

然后

docker start my-forum-nodebb

我在使用 redis 地址时遇到问题,所以我想修复它并重新启动,但我不确定如何做?另外我想在项目目录中发出命令 grunt,再次不确定如何?

我的问题是如何与 docker 容器内的应用程序交互,就好像我可以直接访问项目文件夹本身一样?我错过了什么吗?

此答案中的所有代码都未经测试,因为我目前使用的计算机没有 docker。

查看容器是否还在运行ning

docker ps

停止配置错误的容器

docker stop my-forum-redis
docker stop my-forum-nodebb

删除配置错误的容器及其卷

(它们所基于的 docker 个图像将被保留。)

docker rm --volumes --force stop my-forum-nodebb
docker rm --volumes --force my-forum-redis

重新开始

然后,再次发出 3 commands,现在使用正确的端口。

在容器内执行任意命令

Also I would like to issue the command grunt in the project directory, again not sure how?

您可能希望在 docker run --name my-forum-nodebb ... 命令之后但在 docker start my-forum-nodebb.

之前执行以下操作

docker run 接受要执行的命令而不是容器的默认命令。让我们首先使用它来找出我们将降落在容器中的哪个位置:

docker run my-forum-nodebb pwd

如果那是您要 运行 grunt 的目录,请继续:

docker run my-forum-nodebb grunt

否则,您将不得不将多个命令塞入一个命令中。您可以通过调用 shell:

docker run my-forum-nodebb bash -c 'cd /path/to/project/dir; grunt'

其中 /path/to/project/dir 将替换为您想要 运行 grunt.

的位置