我如何 运行 来自 DockerFile 的 docker 实例?

How do I run a docker instance from a DockerFile?

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

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

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

这会在您的本地机器上为您提供一个名为 nodebb 的映像,您可以使用 docker run -d nodebb 从中启动一个容器(您可以将 nodebb 更改为您自己的名称).

您不能从 Dockerfile 启动容器。

过程是这样的:

Dockerfile =[docker build]=> Docker image =[docker run]=> Docker container

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

[1]:您还可以 docker import 来自 tarball 的图像或再次 docker load

虽然其他答案可用,但这确实对我有帮助,所以我也把它放在这里。

来自the documentation

Instead of specifying a context, you can pass a single Dockerfile in the URL or pipe the file in via STDIN. To pipe a Dockerfile from STDIN:

$ docker build - < Dockerfile

With Powershell on Windows, you can run:

Get-Content Dockerfile | docker build -

构建完成后,运行 命令:

docker image ls

你会看到这样的东西:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB

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

docker run 123456789

最后的数字是上一步的实际图像 ID

如果您不想记住图片id,可以通过

标记您的图片
docker tag 123456789 pavel/pavel-build

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

简单直接的解决方案是:

docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67

3000 - 可以是任何端口

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

注意:您应该位于包含 Dockerfile.

的目录中

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

docker build --no-cache . |  grep "Successfully built" | sed 's/Successfully built //g' | xargs -I{} docker run {}

使用 docker 桌面 20.10.8

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

services:
    my_instance:
        build:
            context: .
            dockerfile: my_instance.dockerfile

然后 docker compose updocker compose run /bin/bash 或其他。

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

我们可以看到 docker 文件在项目文件夹中 E:\Code SAmple\flutqr

构建命令

docker build -t fluweb .
  • fluweb 是容器的名称你可以指定任何名称
  • .表示当前目录