我们正在尝试在 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/