我有一个项目,我需要使用CircleCi来构建docker应用程序映像,然后将其上传到Amazon容器存储库。
鉴于CircleCI也可以在Docker上运行,我为此创建了一个Docker映像,该映像包含一个版本的Ubuntu,以及AWS CLI,Node和Docker。请参阅下面的Dockerfile:
FROM ubuntu:16.04
# update libraries
RUN apt-get update
RUN apt-get install -y apt-transport-https ca-certificates curl software-properties-common
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# install docker
RUN apt-get update
RUN apt-cache policy docker-ce
RUN apt-get install -y docker-ce
# <---
RUN systemctl status docker # <--- TROUBLE HERE
# <---
# install node
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt install -y nodejs
# install aws cli
RUN apt-get install -y python-pip python-dev build-essential
RUN pip install --upgrade pip
RUN pip install awscli --upgrade
我目前在使用此CircleCi docker映像时遇到一些问题,因为如果我保留命令RUN systemctl status docker
,则会出现以下错误:
Failed to connect to bus: No such file or directory The command '/bin/sh -c systemctl status docker' returned a non-zero code: 1
另一方面,如果我删除该命令,则说明构建成功。但是,当我进入docker sudo docker run -it unad16
并运行任何docker命令(例如docker images
)时,出现以下错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
自昨天以来,我一直在尝试调试此错误,但未成功完成。因此,我们将不胜感激任何帮助。
注意:
sudo docker run -ti --privileged=true unad16
在特权模式下运行docker,也会发生“守护程序”错误答案 0 :(得分:2)
如果要在circleci中构建docker映像,则无需运行docker守护进程。相反,您只需要带有docker client的图像和带有- setup_remote_docker
的circle配置。
了解更多 https://circleci.com/docs/2.0/building-docker-images/
如果出于其他原因您仍想在docker映像中运行docker服务,请参阅DockerInDocker存储库,尤其是README.md部分。