簡體   English   中英

無法在容器內運行 docker。 無法連接到 unix:///var/run/docker.sock 處的 Docker 守護程序

[英]Unable to run docker within the container. Cannot connect to the Docker daemon at unix:///var/run/docker.sock

我正在嘗試使用我的應用程序在容器內運行 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

錯誤是否發生在正在運行的容器內部(不是在 docker 構建期間)? 我會假設是這樣,但如果不是,您將無法從構建內部訪問 docker 守護程序。

您需要以下內容才能使這種設置正常工作-

  1. 你需要一個 docker CLIENT 在你的圖像中。 apt install docker-cli之類的
  2. 您需要一個暴露於您的容器的 docker DAEMON。 只要守護程序設置為以這種方式進行偵聽,就可以像在那里那樣綁定安裝
  3. 您需要容器內的守護進程的許可。 默認情況下,守護進程使用 unix 套接字,因此在容器中運行的用戶必須具有 unix 文件系統權限才能寫入該套接字

您沒有發布錯誤消息,因此無法猜測是您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM