docker - 在 github 工作流图像上启用实验性 docker 功能

标签 docker ubuntu yaml github-actions

我们正在尝试在 github 工作流程上的 ubuntu 最新图像上启用实验性功能,因为希望使用 squash 来减小图像大小。但这是不可能的,因为我们收到以下错误:

/home/runner/work/_temp/59d363d1-0231-4d54-bffe-1e3205bf6bf3.sh: line 3: /etc/docker/daemon.json: Permission denied

对于以下工作流程:

- name: Build, tag, and push TOING image to Amazon ECR
  id: build-image
  env:
    ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
    ECR_REPOSITORY: TOING/TOING/TOING_REPO
    IMAGE_TAG: TOING_TEST
    DOCKER_CLI_EXPERIMENTAL: enabled
  run: |
    #build and push images
    sudo rm -rf /etc/docker/daemon.json
    sudo echo '{"experimental": true}' >> /etc/docker/daemon.json
    sudo systemctl restart docker
    docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f core/TOING/Dockerfile .
    docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
    echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"

我们已验证 daemon.json 文件已正确更新,并且还对我们的命令使用了 sudo,如图所示。

我们还开通了issue on github对此,但目前尚未得到回应。如果有任何帮助,我将不胜感激。

PS:我们尝试了“experimental”:true“experimental”:“enabled”

最佳答案

We have verified that the daemon.json file is properly updated

根据您的错误消息,它似乎正确更新:

/home/runner/work/_temp/59d363d1-0231-4d54-bffe-1e3205bf6bf3.sh: line 3: /etc/docker/daemon.json: Permission denied

这是怎么回事?那么,sudo 命令将以 root 身份运行给定的命令。但是您正在执行 shell 重定向,这是由 shell 本身处理的,而不是由 sudo 处理的。换句话说,您正在重定向 sudo 的输出。

如果您想以 root 身份写入文件,那么您实际上需要 run a command that writes the file, and then run that using sudo 。例如:

echo '{"experimental": true}' | sudo tee -a /etc/docker/daemon.json

关于docker - 在 github 工作流图像上启用实验性 docker 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60171603/

相关文章:

yaml.scanner.ScannerError : while scanning a directive

ruby - 在我的 Rails 应用程序上运行 "heroku run rake db:migrate"时出现 YAML 语法错误

docker - 使用dockerfile在容器中挂载当前目录

azure - 使用 Azure 容器实例中托管的 Docker 进行的 Application Insights 遥测有多详细

r - 在 UBUNTU 16 中安装 R

linux - Arch Linux - apt-get update 等效命令?

docker - 如何在 Wildfly Docker 镜像上设置时区和区域设置?

linux - Artifactory 作为 Docker 注册表无法正常工作

postgresql - Postgres 数据库文件保存在 ubuntu 中的什么地方?

ruby-on-rails - Rails - 查找不同语言环境之间丢失的键(.yml 文件)