Twi*_*kle 94 docker dockerfile
是否可以在一个命令的帮助下构建和运行Dockerfile,因为有一个命令docker build可以构建Dockerfile并docker run -it运行命令.
是否有这两个命令的任意组合,只需一个命令就可以更容易地构建和运行?
小智 166
如果您想避免标记,只docker build -q输出最终图像哈希,您可以将其用作以下参数docker run:
docker run -it $(docker build -q .)
Run Code Online (Sandbox Code Playgroud)
并添加--rm到docker run,如果你想退出时容器自动删除.
docker run --rm -it $(docker build -q .)
Run Code Online (Sandbox Code Playgroud)
Jon*_*art 114
不,没有单一命令.但是,如果您在构建图像时标记图像,则运行起来会更容易:
docker build -t foo . && docker run -it foo
Run Code Online (Sandbox Code Playgroud)
Dej*_*mic 30
为了方便起见,我使用 docker-compose 因为我正在构建的大多数应用程序迟早都会与外部服务通信,所以如果我无论如何都要使用它,为什么不从一开始就使用它。只需将 docker-compose.yml 设为:
version: "3"
services:
app:
build: .
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令运行应用程序:
docker-compose up --build app
Run Code Online (Sandbox Code Playgroud)
它将根据是否对映像定义进行了更改来重建映像或重用容器。
如果您使用 Makefile,我发现此代码段很有用:
build:
@docker build . | tee .buildlog
bash: build
@docker run --rm -it $(shell grep "Successfully built" .buildlog | cut -d ' ' -f 3) /bin/bash
Run Code Online (Sandbox Code Playgroud)
您不需要标记,就像@jonathon-reinhart 的回答一样,但您也可以获得构建输出。
您还可以执行docker build并将其输出到的图像名称通过管道传输docker run:
docker build . | tail -n1 | cut -d' ' -f3 | xargs -I{} docker run {}
Run Code Online (Sandbox Code Playgroud)
docker build会给你多行文本... Successfully built 18e77bc0d83atail -n1' '并获取3rd 单词cut -d' ' -f3runwithxargs -I{} docker run {}最近我开始收到一条关于在每次构建后使用的促销信息docker scan。
使用“docker scan”对图像运行 Snyk 测试以查找漏洞并学习如何修复它们
这是我用来做:
docker build -q .
Run Code Online (Sandbox Code Playgroud)
这是现在的工作:
docker build -q . | head -n1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50044 次 |
| 最近记录: |