我正在尝试使用我的应用程序在容器内运行 docker,以创建图像并构建它们。我读过如果我从我的主机绑定 docker.sock(在 docker-compose.yml 中)我可以做到,但是我收到了这个错误:
Error, Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?panic: runtime error: invalid memory address or nil pointer dereference
我的代码:
docker-compose
version: "3.5"
services:
lqcli-backend:
build:
context: .
dockerfile: Dockerfile
image: lqcli-backend
container_name: lqcli-backend
volumes:
# Bind Docker socket on the host so we can connect to the daemon from
# within the container
- "/var/run/docker.sock:/var/run/docker.sock:rw"
Dockerfile
FROM golang:latest
WORKDIR /go/src/app
COPY . .
# Download all the dependencies
RUN go get -d -v ./...
# Install the package
RUN go install -v ./...
RUN go install lqcli.go
RUN go build lqcli.go
RUN mkdir /var/local/lightquery
WORKDIR /var/local/lightquery
RUN cp /go/src/app/lqcliconfig.yml .
RUN cp -R /go/src/app/templatefolder/ .
RUN cp -R /go/src/app/buildfolder/ .
RUN chown -R $(whoami) /var/local/lightquery/
WORKDIR /go/src/app
RUN lqcli -d example2.py -task example2
CMD ["lqcli","-d","example2.py"]
我也尝试 RUN service docker start 但它不起作用:
------
> [15/16] RUN service docker start:
#19 0.410 docker: unrecognized service
------
编辑: 完整的错误信息:
loren@RONDAN1:/mnt/c/Users/rondan/Desktop/lightquery-cli$ docker-compose up --build
Building lqcli-backend
[+] Building 27.6s (19/19) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 38B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/golang:latest 2.3s
=> [internal] load build context 0.3s
=> => transferring context: 4.23kB 0.3s
=> [ 1/15] FROM docker.io/library/golang:latest@sha256:7f69ee6e3ea6c3acab98576d8d51bf2e72ed722a0bd4e4363423fddb3 0.0s
=> CACHED [ 2/15] WORKDIR /go/src/app 0.0s
=> [ 3/15] COPY . . 0.0s
=> [ 4/15] RUN go get -d -v ./... 9.7s
=> [ 5/15] RUN go install -v ./... 8.7s
=> [ 6/15] RUN go install lqcli.go 1.6s
=> [ 7/15] RUN go build lqcli.go 1.5s
=> [ 8/15] RUN mkdir /var/local/lightquery 0.5s
=> [ 9/15] WORKDIR /var/local/lightquery 0.1s
=> [10/15] RUN cp /go/src/app/lqcliconfig.yml . 0.4s
=> [11/15] RUN cp -R /go/src/app/templatefolder/ . 0.6s
=> [12/15] RUN cp -R /go/src/app/buildfolder/ . 0.5s
=> [13/15] RUN chown -R $(whoami) /var/local/lightquery/ 0.6s
=> [14/15] WORKDIR /go/src/app 0.0s
=> ERROR [15/15] RUN lqcli -d example2.py -task example2 0.8s
------
> [15/15] RUN lqcli -d example2.py -task example2:
[████████████ ] 25% 25/100Error, Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?panic: runtime error: invalid memory address or nil pointer dereference
#19 0.762 [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x49ea13]
#19 0.762
#19 0.762 goroutine 1 [running]:
#19 0.762 io.ReadAll(0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1)
#19 0.762 /usr/local/go/src/io/io.go:633 +0xb3
#19 0.762 io/ioutil.ReadAll(...)
#19 0.762 /usr/local/go/src/io/ioutil/ioutil.go:27
#19 0.762 main.buildDocker(0xc000105d70, 0x22, 0xc000105da0, 0x25, 0xc00033ff10)
#19 0.762 /go/src/app/lqcli.go:328 +0x83d
#19 0.762 main.main()
#19 0.762 /go/src/app/lqcli.go:571 +0x350
答案 0 :(得分:1)
错误是否发生在正在运行的容器内部(不是在 docker build 期间)?我会假设是这样,但如果不是,您将无法从构建内部访问 docker 守护程序。
您需要以下东西才能使这种设置工作-
apt install docker-cli
之类的您没有发布错误消息,因此无法猜测是您的问题所在。