我终于想出了如何让docker启动并运行。
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
我将它链接到redis实例,很酷。
这是从头开始的,我假设我创建了redis实例
docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis
它从远程仓库中提取图像?
NodeBB提供Dockerfile
https://github.com/NodeBB/NodeBB/blob/master/Dockerfile我不太确定如何使用它。我假设我可以通过在我的遥控器上调用这个Dockerfile来以某种方式创建一个本地环境。
这是对的吗?如果是这样,我如何创建指向远程的本地实例?
答案 0 :(得分:41)
下载文件并从同一目录运行parent
这将为您提供本地计算机上的一个名为nodebb的图像,您可以使用docker build -t <nodebb> .
答案 1 :(得分:20)
您无法从Dockerfile启动容器。
过程如下:
Dockerfile = [
docker build
] =&gt; Docker镜像 = [docker run
] =&gt; Docker容器
要启动(或运行)容器,您需要一个图像。要创建映像,您需要构建Dockerfile [1]。
[1]:您还可以{tar}来自docker import
图片docker load
。
答案 2 :(得分:6)
简单明了的解决方案是:
docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67
3000
-可以是任何端口
a3e628814c68
-成功构建命令给出的哈希结果
注意:您应该位于包含 Dockerfile 的目录中。
答案 3 :(得分:3)
虽然以上答案都可以使用,但这确实对我有所帮助,所以我也将其放在此处。
您可以在其中传递单个Dockerfile来代替指定上下文 URL或通过STDIN通过管道传输文件。通过管道传递Dockerfile STDIN:
$ docker build - < Dockerfile
使用Windows上的Powershell,您可以运行:
Get-Content Dockerfile | docker build -
构建完成后,运行命令:
docker image ls
您将看到类似这样的内容:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 123456789 39 seconds ago 422MB
复制您的实际IMAGE ID,然后运行
docker run 123456789
最后一个数字是上一步中的实际图片ID
如果您不想记住图像ID,可以通过以下方式标记图像
docker tag 123456789 pavel/pavel-build
这会将您的图片标记为pavel/pavel-build
答案 4 :(得分:0)
标题是什么把我带到这里,它直接从 Dockerfile 运行一个容器。
docker build --no-cache . | grep "Successfully built" | sed 's/Successfully built //g' | xargs -I{} docker run {}