Ste*_*eve 27 docker dockerfile
是否有一个命令/选项来显示或列出发送到Docker守护程序以构建映像的上下文?
$ docker build -t "image-name"
Sending build context to Docker daemon 8.499 MB
...
Run Code Online (Sandbox Code Playgroud)
通过指定.dockerignore
文件中的模式,可以从构建上下文中排除文件和目录.我想我正在寻找的东西等于测试.dockerignore
除了Docker在确定上下文时使用的任何其他利基规则.
Ric*_*nco 24
唯一的方法是将当前目录添加到特定目录并列出它.
尝试使用此Dockerfile构建:
FROM busybox
RUN mkdir /tmp/build/
# Add context to /tmp/build/
COPY . /tmp/build/
Run Code Online (Sandbox Code Playgroud)
建立它:
docker build -t test .
Run Code Online (Sandbox Code Playgroud)
列出/ tmp/build中的所有文件和目录:
docker run --rm -it test find /tmp/build
Run Code Online (Sandbox Code Playgroud)
小智 14
从版本 18.09 开始,Docker 可以选择使用BuildKit后端导出上下文数据。
默认情况下不启用它,因此您需要DOCKER_BUILDKIT=1
在调用docker build
命令之前设置一个环境变量。
如果当前目录中没有任何 Dockerfile,以下命令也可以工作。
printf 'FROM scratch\nCOPY . /' | DOCKER_BUILDKIT=1 docker build -f- -o context .
Run Code Online (Sandbox Code Playgroud)
当您多次运行时,请记住使用rm -r context
.
您还可以将上下文数据作为存档获取,然后使用archivemount
命令挂载:
printf 'FROM scratch\nCOPY . /' | DOCKER_BUILDKIT=1 docker build -f- -o- . > context.tar
mkdir context
archivemount context.tar context
Run Code Online (Sandbox Code Playgroud)
使用这两种方法,然后您可以使用 探索结果ncdu context
。
小智 13
上面的答案很好,但是在大多数情况下,存在一个技术含量较低的解决方案- ncdu
。该实用程序将显示具有大小的漂亮且交互式的树结构。它具有一个选项,它将从文件中提取模式并将其从扫描中排除。所以你可以做ncdu -X .dockerignore
。您将获得如下内容:
这非常接近您将在Docker映像中获得的内容。请注意,如果在图像中添加点目录(如.yarn
),则该目录不会显示在ncdu
输出中。
Jes*_*sen 12
更新的答案:自 2017 年以来,Docker 建议使用@tlrobinson 的评论COPY
代替ADD
并使用,更简单的 Dockerfile 如下所示:
# debug and list the docker build context so that you can minimmize it
#
# usage:
# docker build -f docker/context.Dockerfile -t test/buildcontext .
#
######################
FROM busybox
RUN mkdir /tmp/build/
# Add context to /tmp/build/
COPY . /tmp/build
# this last command outputs the list of files added to the build context:
RUN find /tmp/build/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6041 次 |
最近记录: |