我有以下项目结构
\nMode                 LastWriteTime         Length Name\n----                 -------------         ------ ----\nd-----         4/22/2021   1:49 PM                App_Start\nd-----         3/20/2020   3:35 PM                Areas\nd-----          5/4/2021   7:01 PM                bin\nd-----         3/20/2020   3:35 PM                Content\nd-----          5/4/2021   5:59 PM                Controllers\nd-----         3/20/2020   3:35 PM                fonts\nd-----         8/20/2020   9:43 PM                obj\nd-----          7/9/2020   8:43 PM                Properties\nd-----         3/20/2020   3:35 PM                Scripts\nd-----         3/20/2020   3:35 PM                Views\n-a----          5/4/2021   6:00 PM             46 .dockerignore\n-a----          5/4/2021   6:00 PM          45239 foo.csproj\n-a----          5/4/2021  11:21 PM           1621 foo.csproj.user\n-a----         4/22/2021   1:49 PM            390 ConnectionStrings.config\n-a----          5/5/2021  12:17 AM            375 Dockerfile\n-a----         3/20/2020   3:35 PM            116 Global.asax\n-a----         3/20/2020 …docker windows-10 dockerfile visual-studio-2019 docker-buildkit
更新:这个问题是用 MVRE 重构的。
\n有没有办法可以RUN从使用 构建的 Dockerfile 中查看完整命令docker build?\n例如 如果我的 Dockerfile 有这样的语句:
# Dockerfile\nFROM alpine:3.7 as base\nRUN echo "this is the song that doesn\'t end. Yes it goes on and on, my friends. Some people started singing it not knowing what it was, and they\'ll continue singing it forever just because..."\n...有没有办法可以看到完整的命令,即echo "this is the song that doesn\'t end. Yes it goes on and on, my friends. Some people started singing …
使用构建Docker映像时DOCKER_BUILDKIT=1,进度指示器非常酷,但是没有命令输出。我如何查看用于调试构建的命令输出?
我只想从不同的目录构建一个 dockerfile,我尝试了以下命令
docker build -f C:/Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile
和
docker build -f C://Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile
它们都会产生相同的错误
"docker build" requires exactly 1 argument.
我错过了什么吗?
我想检查我当前使用 BuildKit 进行的 docker 设置是否包含此提交。
当我使用以下命令构建映像时,如何找出 docker 使用的 BuildKit 版本
DOCKER_BUILDKIT=1 docker build
我最近开始使用 Buildkit 来隐藏一些环境变量,它在 gha 的 prod 中效果很好!
我的 Dockerfile 现在是这样的:
# syntax=docker/dockerfile:1.2
...
RUN --mount=type=secret,id=my_secret,uid=1000 \
    MY_SECRET=$(cat /run/secrets/my_secret) \
    && export MY_SECRET
而我的正面是这样的:
DOCKER_BUILDKIT=1 docker build \
    --secret  id=my_secret,env="MY_SECRET"
当我在我的 Github 操作上运行它时,它运行得很好。
但现在,问题是当我尝试在本地构建它时。执行时docker-compose build失败。当然,因为我没有传递任何秘密,所以我的后端(Dockerfile)将无法从run/secrets/.
到目前为止,我尝试使用以下方法完成本地构建docker-compose build:
1. 使用 Docker 秘密:
我基本上尝试这样做:
$ docker swarm init
$ echo "my_secret_value" docker secret create my_secret -
我认为保存秘密可以解决问题,但没有成功。我仍然收到相同的错误消息:
cat:无法打开“/run/secrets/my_secret”:没有这样的文件或目录
version: '3'
services:
  app:
    build:
      context: "."
      args:
        - "MY_SECRET"
  secrets:
      - my_secret
secrets: …我们当前的构建系统在 docker 容器(Docker in Docker)内构建 docker 镜像。我们的许多 Docker 构建都需要凭据才能从私有工件存储库中提取。
我们已经使用 docker Secrets 处理了这个问题。将秘密传递给 docker build 命令,并在 Dockerfile 中,在需要的地方引用 RUN 命令中的秘密。这意味着我们正在使用 docker buildkit。 本文对此进行了解释。
我们正在迁移到不同的构建系统(GitLab),并且管理员已在 Docker 中禁用 Docker(安全原因),因此我们将迁移到Kaniko进行 docker 构建。
Kaniko 似乎不像 docker 那样支持秘密。(没有命令行选项可以通过 Kaniko 执行器传递秘密)。
docker 构建所需的凭据存储在 GitLab 变量中。对于 DinD,您只需将这些变量作为秘密添加到 docker 构建中:
DOCKER_BUILDKIT=1 docker build . \
   --secret=type=env,id=USERNAME \
   --secret=type=env,id=PASSWORD \
然后在 docker 中,使用秘密:
RUN --mount=type=secret,id=USERNAME --mount=type=secret,id=PASSWORD \
   USER=$(cat /run/secrets/USERNAME) \
    PASS=$(cat /run/secrets/PASSWORD) \
     ./scriptThatUsesTheseEnvVarCredentialsToPullArtifacts
...rest of build..
如果没有 kaniko 执行器的 --secret 标志,我不确定如何利用 …
gitlab-ci docker-secrets docker-in-docker kaniko docker-buildkit
我有一个包含多个目标的 Dockerfile。例如:
FROM x as frontend
...
FROM y as backend
...
FROM z as runtime
...
COPY --from=frontend ...
COPY --from=backend ...
为了构建和标记最终图像,我使用:
docker build -t my-project .
为了构建和标记中间目标,我提供了--target参数:
docker build -t my-project-backend --target backend .
但是是否有可能构建一个最终图像并标记所有中间图像?换句话说,等同于:
docker build -t my-project-frontend --target frontend .
docker build -t my-project-backend --target backend .
docker build -t my-project .
但是用一个命令?
我认为需要一些解释。如果使用 buildkit( export DOCKER_BUILDKIT=1),那么所有独立的目标都是并行构建的。所以它比一个一个地构建它们要快。我需要标记每个目标以将它们推送到 docker 注册表以及最后一个。
目前我正在 CI 中构建我的图像而没有 buildkit,我正在尝试加快这个过程。
我正在寻找一种将 docker buildkit 与 az acr build 一起使用的方法。\n我知道它可以与 azure pipeline 一起使用,但如何将它与 azure cli 一起使用?
\n问候,\nJ\xc3\xbcrgen
\n我正在使用 buildx 进行多架构 Docker 构建。
基础映像python:3.8.5-alpine具有linux/arm64/v8其操作系统/体系结构之一,但生成的映像 ( corralpeltzer/newtrackon) 缺少变体,从而在其清单中/v8创建了一个映像。linux/arm64
我对这种差异感到困惑。会产生兼容性问题吗?我应该尝试强制使用变体docker manifest annotate吗?
有关更多详细信息,这是在GitHub 操作中运行的。这是 buildx 命令的一部分:
buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8
这个问题似乎来自于 buildx 构建器可用的拱门:
/usr/bin/docker buildx inspect --bootstrap
#1 [internal] booting buildkit
#1 pulling image moby/buildkit:buildx-stable-1
#1 pulling image moby/buildkit:buildx-stable-1 1.6s done
#1 creating container buildx_buildkit_builder-4bebce7d838a55e24aa111384fec8c97144df7290
#1 creating container buildx_buildkit_builder-4bebce7d838a55e24aa111384fec8c97144df7290 1.7s done
#1 DONE 3.3s
Name:   builder-4bebce7d838a55e24aa111384fec8c97144df729
Driver: docker-container
Nodes:
Name:      builder-4bebce7d838a55e24aa111384fec8c97144df7290
Endpoint:  unix:///var/run/docker.sock
Status:    running
Platforms: linux/amd64, linux/arm64, …docker-buildkit ×10
docker ×9
docker-build ×3
dockerfile ×3
azure-devops ×1
gitlab-ci ×1
kaniko ×1
windows-10 ×1