所以我使用了testcafe的默认docker,它在docker hub上是testcafe / testcafe,我必须运行一些testcafe脚本。
但是,我需要将错误触发的屏幕截图上传到我在Docker镜像运行完毕后可以查看的地方。
我正在使用使用bash的imgur程序,所以我重新做了一些事情,使它兼容并且一切正常,除了我需要卷曲。我试过跑
apk add curl
但我收到了错误
ERROR: Unable to lock database: Permission denied ERROR: Failed to open apk database:
现在我没有这意味着我没有权限这样做但是我能解决这个问题吗?有一些方法可以成为root用户(这是在bitbucket管道中)。
我真的不想创建自己的码头工具。
另请注意我发现的与此相关的所有问题都是关于在创建docker时安装,但我的问题是如何在创建docker之后执行此操作。 thx(一个很好的答案是保存屏幕截图的另一种方法,但最好不用ssh)。
答案 0 :(得分:7)
希望这会对那些对创建新容器不感兴趣的人有所帮助。
如果您尝试像这样进入docker容器:
docker exec -it <containername> /bin/sh
相反,请尝试以下操作:
docker exec -it --user=root <containername> /bin/sh
答案 1 :(得分:4)
对于那些在通过Jenkins管道脚本运行(并通过Google搜索进入)时看到此错误的人,请在启动Docker映像时使用以下内容:
node('docker') {
docker.image('golang:1.14rc1-alpine3.11').inside(' -u 0') {
sh 'apk add curl'
...
}
}
答案 2 :(得分:4)
docker exec -it --user=root {containername} bash
有了这个,我就可以执行 apk-update
答案 3 :(得分:1)
对于那些使用Dockerfile看到此错误的人(并通过Google搜索来到这里):将以下行添加到您的Dockerfile中:
USER root
答案 4 :(得分:1)
最好的解决方法是将USER <youruser>
之后放在您的docker构建失败的行中。在大多数情况下,可以在命令或入口点的正上方添加USER
行。
例如:
FROM python:3.8.0-alpine
RUN addgroup -S app && adduser -S -G app app
RUN apk add --no-cache libmaxminddb postgresql-dev gcc musl-dev
ADD . .
USER app
ENTRYPOINT ["scripts/entrypoint.sh"]
CMD ["scripts/gunicorn.sh"]