是否有可能从Dockerfile构建镜像,并使用一个命令运行它? docker build命令用于构建Dockerfile, docker run -it命令用于运行映像。

是否存在这两个命令的组合,以使仅使用一个命令就可以更容易地构建和运行?


当前回答

如果你使用Makefile,我发现这个片段很有用:

build:
    @docker build . | tee .buildlog

bash: build
    @docker run --rm -it $(shell grep "Successfully built" .buildlog | cut -d ' ' -f 3) /bin/bash

您不需要像@ jonathan -reinhart answer中那样的标记,但是您也可以得到构建输出。

其他回答

如果你使用Makefile,我发现这个片段很有用:

build:
    @docker build . | tee .buildlog

bash: build
    @docker run --rm -it $(shell grep "Successfully built" .buildlog | cut -d ' ' -f 3) /bin/bash

您不需要像@ jonathan -reinhart answer中那样的标记,但是您也可以得到构建输出。

你也可以做docker构建和管道图像名称,它输出到docker运行:

docker build . | tail -n1 | cut -d' ' -f3 | xargs -I{} docker run {}

Docker将为您提供多行文本…成功搭建18e77bc0d83a 最后一行的尾部是-n1 用' '分割,用cut -d' ' -f3得到第三个单词 将它作为参数传递给xargs运行-I{} docker run {}

对于任何寻找可重用解决方案的人来说,你可以安装我创建的这个docker插件: https://github.com/stasmihailov/docker-script

然后你可以构建并运行Dockerfile,如下所示:

docker script ./Dockerfile

最近,我开始收到关于每次构建后使用docker扫描的宣传信息。

使用“docker扫描”对图像运行Snyk测试,以查找漏洞并学习如何修复它们

这是我过去常做的事:

docker build --quiet .

这就是现在的工作方式:

docker build --quiet . | head -n1

Windows电脑

生成run.bat文件。然后在文件中添加这个:

docker build -t foo . 
docker run -it foo

要使用powershell或cmd运行文件,请执行以下操作:

./run.bat