如何从DockerFile运行docker实例?

Mic*_*bry 61 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
Run Code Online (Sandbox Code Playgroud)

我将它链接到一个redis实例,很酷.

这是从头开始,我假设我创建了redis实例

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis
Run Code Online (Sandbox Code Playgroud)

它从远程仓库中提取图像?

NodeBB提供了Dockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfile我真的不太确定如何使用它.我假设我可以通过在我的遥控器上调用此Dockerfile以某种方式创建本地环境.

它是否正确?如果是这样,我如何创建指向远程的本地实例?

And*_*and 75

下载文件并从同一目录运行 docker build -t <nodebb> .

这将在本地计算机上为您提供一个名为nodebb的映像,您可以使用该映像启动容器 docker run -d nodebb

  • 您提供的命令不起作用,所以我尝试了docker build。,它起作用了,但是由于未命名,所以我无法运行它。docker build -t &lt;nodebb&gt;。给我文件存在:。我有一个现有的项目,带有Dockerfile,所以我只是在该目录中运行了它。 (3认同)
  • 顺便说一句,在示例中&lt;&gt;代表什么,为什么选择&lt;nodebb&gt;? (2认同)
  • 这通过https://docs.docker.com/engine/reference/builder/回答了我的很多问题 (2认同)
  • @MichaelJosephAubry 不要逐字输入参数 &lt;nodebb&gt; 。它是一个占位符,用于指定您自己的标签名称,例如“docker build -t mytag”。 (2认同)

zhi*_*sme 35

直接和简单的解决方案是:

docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67
Run Code Online (Sandbox Code Playgroud)

3000 - 可以是任何端口

a3e628814c68 - 成功构建命令给出的哈希结果

注意:您应该在包含Dockerfile 的目录中。


Auz*_*ias 31

您无法从Dockerfile启动容器.

过程如下:

Dockerfile = [ docker build] => Docker image = [ docker run] => Docker容器

要启动(或运行)容器,您需要一个图像.要创建映像,您需要构建Dockerfile [1].

[1]:您还可以docker import使用tarball或再次使用tarball docker load.


Fre*_*ers 22

标题让我来到这里,它直接从 Dockerfile 运行容器。

docker build --no-cache . |  grep "Successfully built" | sed 's/Successfully built //g' | xargs -I{} docker run {}
Run Code Online (Sandbox Code Playgroud)


Pav*_*cek 15

尽管上述答案是有用的,但这确实对我有所帮助,所以我也将其放在此处。

文档中

除了指定上下文,您还可以在URL中传递单个Dockerfile或通过STDIN将文件通过管道传递。要从STDIN传递Dockerfile:

$ docker build - < Dockerfile
Run Code Online (Sandbox Code Playgroud)

使用Windows上的Powershell,您可以运行:

Get-Content Dockerfile | docker build -
Run Code Online (Sandbox Code Playgroud)

构建完成后,运行命令:

docker image ls
Run Code Online (Sandbox Code Playgroud)

您将看到如下内容:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB
Run Code Online (Sandbox Code Playgroud)

复制您的实际IMAGE ID,然后运行

docker run 123456789
Run Code Online (Sandbox Code Playgroud)

末尾的数字是上一步的实际图像ID

如果您不想记住图像ID,可以通过以下方式标记图像

docker tag 123456789 pavel/pavel-build
Run Code Online (Sandbox Code Playgroud)

哪个会将您的图片标记为 pavel/pavel-build

  • 令人惊奇的是,在 2020 年,第一个片段花了这么长时间才找到。 (13认同)
  • 这只是更仪式化的接受答案。 (6认同)

And*_*yev 15

docker run $(docker build -q .)
Run Code Online (Sandbox Code Playgroud)


Ste*_*vko 8

使用 docker 桌面 20.10.8

您可以使用 docker-compose 文件来命名和配置您的环境。

services:
    my_instance:
        build:
            context: .
            dockerfile: my_instance.dockerfile
Run Code Online (Sandbox Code Playgroud)

然后docker compose up或者docker compose run /bin/bash或者其他什么。

根据https://docs.docker.com/compose/compose-file/compose-file-v3/#dockerfile