如何从DockerFile运行docker实例?

时间:2016-03-18 03:19:47

标签: docker docker-machine

我终于想出了如何让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来以某种方式创建一个本地环境。

这是对的吗?如果是这样,我如何创建指向远程的本地实例?

5 个答案:

答案 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)

虽然以上答案都可以使用,但这确实对我有所帮助,所以我也将其放在此处。

来自the documentation

  

您可以在其中传递单个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 {}