我有一个非常简单的config.yml
文件:
version: 2
jobs:
build:
working_directory: ~/app
docker:
- image: circleci/node:8.4.0
steps:
- checkout
- run: node -e "console.log('Hello from NodeJS ' + process.version + '\!')"
- run: yarn
- setup_remote_docker
- run: docker build .
它的作用很简单:启动一个
node
镜像,测试 node 是否正在运行,进行 yarn install
和 docker build
。我的 Dockerfile 没有什么特别之处,只有 COPY 和 ENTRYPOINT。
在我的 MacBook Air 上使用 Docker Native 运行
circleci build
时,我会收到以下错误信息:
Got permission denied while trying to connect to the Docker daemon socket at unix://[...]
如果我将 docker build .
命令更改为 sudo docker build .
,在本地使用 circleci build
时,一切都按计划进行。
然而,将此更改推送到 CircleCI 将导致错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
因此,总结一下:在本地使用 sudo
可以正常工作,但在 CircleCI 自身上无法正常工作。在 CircleCI 上不使用 sudo
可以正常工作,但在本地上无法正常工作。这是 CircleCI 工作人员需要解决的问题,还是我可以做些什么? 供参考,我也在 CircleCI 论坛上发布了这个问题。
touch ~/sudo
不会清空文件。应该使用: > ~/sudo
或类似的命令来真正清空文件。因为文件从未被清空,所以它始终使用sudo
。 - lilolesudo
文件。我只是创建一个空文件,否则eval
将无法工作。 - Jeff Huijsmans