Non*_*ame 90 docker docker-build
摘自我的Dockerfile:
FROM node:12.18.0
RUN echo "hello world"
RUN psql --version
Run Code Online (Sandbox Code Playgroud)
当我运行时,docker build .即使它们没有被缓存,我也看不到这两个命令的任何输出。文档说docker build默认情况下是冗长的。为什么我看不到命令的输出?我以前见过他们。
它Dockerfile是从基于 Debian 9 的 node:12.18.0 创建的。
Docker 版本 19.03.13,构建 4484c46d9d。
BMi*_*tch 118
您显示的输出来自 buildkit,它是 docker 附带的经典构建引擎的替代品。您可以使用以下--progress选项调整输出:
--progress string Set type of progress output (auto, plain, tty). Use plain to show container output
(default "auto")
Run Code Online (Sandbox Code Playgroud)
添加--progress=plain将显示未从缓存加载的运行命令的输出。
如果你不想使用 buildkit,你可以通过DOCKER_BUILDKIT=0在你的 shell 中导出来恢复到旧的构建引擎,例如:
DOCKER_BUILDKIT=0 docker build ...
Run Code Online (Sandbox Code Playgroud)
或者
export DOCKER_BUILDKIT=0
docker build ...
Run Code Online (Sandbox Code Playgroud)
vol*_*kit 44
在 Docker 20.10 中,我也必须使用 --no-cache 标志。否则不会显示缓存的输出。
docker build --progress=plain --no-cache .
Run Code Online (Sandbox Code Playgroud)
use*_*745 35
docker build .使用这个docker build . --progress=plain
Run Code Online (Sandbox Code Playgroud)
RUN命令中(这会让 docker 认为它以前没有见过该命令,因此它不使用缓存的版本)例子。如果您的命令是RUN ls使用此命令RUN ls && echo sdfjskdflsjdf(sdfjskdflsjdf每次构建时将其更改为其他命令)。
我尝试了其他答案,但它们都存在问题和缺陷。令人非常沮丧的是 Docker 没有一些像--verbose=true.
这是我最终使用的(这很可笑,但它有效)。
假设你想查看命令的输出ls,这是行不通的docker build .
RUN ls
Run Code Online (Sandbox Code Playgroud)
但这将打印输出docker build --progress=plain:
RUN ls
Run Code Online (Sandbox Code Playgroud)
现在再试一次,它不会打印!- 那是因为 docker 缓存了未更改的层,所以技巧是每次都通过添加一些无意义的内容来更改命令&& echo sdfljsdfljksdfljk,然后每次都更改无意义的内容docker build --progress=plain:
# This prints
RUN ls && echo sdfljsdfljksdfljk
Run Code Online (Sandbox Code Playgroud)
# Next time you run it use a different token
RUN ls && echo sdlfkjsldfkjlskj
Run Code Online (Sandbox Code Playgroud)
所以每次我都会敲击键盘并想出一个新的标记。令人目瞪口呆。(请注意,我尝试过类似的东西&& openssl rand -base64 12生成随机字符串之类的方法,但 docker 意识到代码没有更改,这是行不通的)。
该解决方案远不如真正的 docker 支持将输出打印到控制台。
ruo*_*ola 29
作为指定选项的替代方法--progress=plain,您还可以通过在 shell 配置中设置此环境变量来永久禁用“漂亮”输出:
export BUILDKIT_PROGRESS=plain
Run Code Online (Sandbox Code Playgroud)
hat*_*gic 21
只需--progress=plain在build.
例如:
docker-compose build --progress=plain <container_name>
Run Code Online (Sandbox Code Playgroud)
或者
docker build --progress=plain .
Run Code Online (Sandbox Code Playgroud)
这是您键入时的官方文档docker build --help。
--progress string Set type of progress output (auto, plain, tty). Use plain to show container output (default "auto")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22578 次 |
| 最近记录: |