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

时间:2016-03-17 21:36:33

标签: docker docker-machine

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

我已按照“使用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容器中的应用程序进行交互,就好像我可以直接访问项目文件夹本身一样?我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

此答案中的所有代码均未经过测试,因为我目前在没有泊坞广告的计算机上。

查看容器是否仍在运行

docker ps

停止配置错误的容器

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

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

(它们所基于的泊坞窗图像将被保留。)

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

重新开始

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

在容器

中执行任意命令
  

另外我想在项目目录中发出命令grunt,再次不确定如何?

您可能希望在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的位置。