【问题标题】:Couldn't connect to Docker daemon无法连接到 Docker 守护程序
【发布时间】:2021-10-12 05:50:12
【问题描述】:

我是 Docker 和 CI\CD 的新手 我正在使用带有 Ubuntu 18.04 的 vps。 该项目的docker在本地运行并且工作正常。 我不太明白为什么服务器试图在 http 上找到 docker,而不是在 tcp 上。

  • override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

码头服务状态

  • daemon.json
{ "storage-driver":"overlay" }
  • gitlab-ci.yml
image: docker/compose:latest
services:
  - docker:dind
stages:
  - deploy
variables:
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ""

deploy:
  stage: deploy
  only:
    - master
  tags:
    - deployment
  script:
    # - export DOCKER_HOST="tcp://127.0.0.1:2375"
    - docker-compose stop || true
    - docker-compose up -d 
    - docker ps 

  environment:
    name: production
  • 错误

【问题讨论】:

  • 请编辑您的问题并在问题正文中添加代码、日志、输出、错误消息...作为代码块。使用图像通常几乎不可读,它会削弱搜索引擎对内容进行索引的能力,视障人士无法使用他们的语音合成器,试图帮助您的人无法在需要时复制/粘贴内容,它使用的数据量是等效文本的 1000 倍.最重要的是,它在How to ask 中被明确列为不良做法。谢谢
  • 好的,我会的,谢谢@Zeitounator。
  • 如果您的作业启动失败,应该从服务容器输出日志。您可以在错误上方分享作业日志的任何相关部分吗? (第 1 行 -> 105)。您的工作正在尝试连接 127.0.0.1:2375,这对于这种设置是不正确的。

标签: linux docker docker-compose gitlab-ci cicd


【解决方案1】:

设置DOCKER_HOST 变量。使用docker:dind 服务时,守护进程的默认主机名是服务名称docker。

variables:
    DOCKER_HOST: "tcp://docker:2375"

您还必须设置 GitLab 运行器以启用特权容器。

【讨论】:

    【解决方案2】:

    docker 需要 root 权限才能访问。如果你想运行 docker 命令,或者来自普通用户的docker-compose,你需要将你的用户添加到docker 组,比如:

    sudo usermod -a -G docker yourUserName
    

    通过这样做,您可以使用普通用户升级您的服务和其他 docker 内容。如果您不想将用户添加到 docker 组中,则需要始终在运行的每个 docker commando 上添加 sudo 前缀:

    sudo docker-compose up -d
    

    【讨论】:

    • 谢谢你的回答,但我已经这样做了,结果是一样的。问题是,当服务器构建 pipline 时,看 http 而不是 tcp,docker 部署在 TCP 上的 localhost 端口 2375 上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多